为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.6
【操作系统】:
【CPU】:
【问题描述】*:
请帮忙优化一下,太慢了。
SELECT
count(0)
FROM
bjgh_dw.bjgh_dw_sb_sbb a
LEFT JOIN bjgh_dw.bjgh_dw_jf_jfb b ON a.SBUUID = b.SBUUID
LEFT JOIN bjgh_gl.bjgh_gl_qx_enterprise c ON a.SHXYDM = c.unite_social_code
LEFT JOIN bjgh_gl.bjgh_gl_qx_org_zh d ON c.union_id = d.ORG_ID
LEFT JOIN bjgh_gl.bjgh_gl_qx_org_zh e ON d.PARENT = e.ORG_ID
WHERE
a.SBZT != '1'
AND c.enabled = '1'
AND c.deleted = '0'
AND d.GHDZM LIKE CONCAT(( SELECT ghdzm FROM bjgh_gl.bjgh_gl_qx_org_zh WHERE org_id = 123 ), '%' )
AND c.NAME LIKE concat( '%', '物流', '%' )
ORDER BY
a.FKSSQQ DESC,
a.SHXYDM DESC;
执行计划是:
执行计划1.txt
把order by去掉呢
--1、根据执行计划首先可以判断你的性能瓶颈应该在这里
22 # HASH RIGHT JOIN2 [747, 2589013, 157]; key_num(1), ret_null(0), KEY(b.SBUUID=a.SBUUID)
23 # LOCAL DISTRIBUTE [277, 2415273, 48]; op_id(4) n_keys(1) n_grp(0) flt_only(FALSE) flt_site_data(FALSE) n(0) fbtr_flag(FALSE) KEY(b.SBUUID)
24 # CSCN2 [277, 2415273, 48]; INDEX33561477(bjgh_dw_jf_jfb as b); btr_scan(1)
25 # LOCAL DISTRIBUTE [399, 2589013, 157]; op_id(5) n_keys(1) n_grp(0) flt_only(FALSE) flt_site_data(FALSE) n(0) fbtr_flag(FALSE) KEY(a.SBUUID)
26 # SLCT2 [399, 2589013, 157]; a.SBZT <> '1' SLCT_PUSHDOWN(TRUE)
27 # CSCN2 [399, 2723399, 157]; INDEX33561482(bjgh_dw_sb_sbb as a) NEED_SLCT(TRUE); btr_scan(1)
2、解决思路是先将执行计划22到27的全表扫描消灭,给他加上索引,看看效果;
CREATE INDEX idx_jf_jfb_sbuuid ON bjgh_dw.bjgh_dw_jf_jfb(SBUUID);
CREATE INDEX idx_sb_sbb_opt ON bjgh_dw.bjgh_dw_sb_sbb(SBZT, SBUUID);
3、如果索引生效sql执行效率依旧不行,再发下新的执行计划;

把执行计划调整为文本方式展示再贴一下呢,补充一下每个表的索引情况