语句
// EXPLAIN
SELECT
rule.CODE AS ruleCode,
rule.code_name AS ruleName,
rp.product_name AS productName,
ro.org_name AS orgName,
rp.rc_product_uuid AS productUuid,
count(
IF
( rule.rule_result = 'NORMAL', 1, NULL )
) AS passCount,
count(
IF
( rule.rule_result = 'ALERT', 1, NULL )
) AS NotPassCount,
count(
IF
(
rule.rule_result IN ( 'NORMAL', 'ALERT' ),
1,
NULL
)
) AS totalCount
FROM
rc_rule_alert_party AS rule
INNER JOIN rc_model_out_alert rmoa ON rmoa.in_serial_num = rule.in_serial_num
AND rmoa.del_flag = 0
INNER JOIN rc_product rp ON rmoa.product_num = rp.product_num
AND rp.del_flag = 0
INNER JOIN rc_org ro ON ro.org_num = rmoa.org_num
AND ro.del_flag = 0
INNER JOIN rc_alert_loan_info rali ON rule.rc_alert_loan_info_uuid = rali.rc_alert_loan_info_uuid
AND rali.del_flag = 0
WHERE
rule.del_flag = 0
AND DATE_FORMAT( rule.create_time, '%Y-%m-%d' ) >= '2018-10-22'
AND DATE_FORMAT( rule.create_time, '%Y-%m-%d' ) <= '2019-10-22'
AND rali.product_num = 'PRO_201807300WT3MUSI'
GROUP BY
rule.CODE
ORDER BY
rule.CODE ASC
这是执行计划
图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw)
这个语句很显然rc_model_out_alert 和 rc_alert_loan_info 这两个表没有用到索引导致全表扫描,请教下大佬们怎么优化。线上跑的时候这语句很慢,随着时间条件跨度的增长,速度变慢的更严重