优化复杂 SQL 查询语句:使用 EXISTS 子句替换 LEFT JOIN 并简化查询
该 SQL 查询语句比较复杂,可以考虑优化如下:
-
对于子查询中的 LEFT JOIN 子句,可以使用 EXISTS 子句代替,这样可以避免在子查询中产生过多冗余数据。
-
子查询中的 GROUP BY 子句可以省略,因为子查询中只取 ai.instance_id,这样可以提高查询效率。
-
对于 WHERE 子句中的条件,可以将其移动到子查询中,这样可以减少主查询的数据量。
优化后的 SQL 查询语句如下:
SELECT COUNT(1) FROM approval_instance ai
WHERE ai.draft_flag = 1
AND ai.del_flag = 0
AND ai.final_status = 0
AND EXISTS (
SELECT 1 FROM approval_link_member alm
LEFT JOIN approval_link al ON al.link_id = alm.link_id
WHERE al.del_flag = 0
AND alm.del_flag = 0
AND alm.instance_id = ai.instance_id
AND alm.staff_id = '03f51441f9c0467baaa002923080baa5'
AND alm.status = '0'
AND alm.status <> '00'
);
原文地址: https://www.cveoy.top/t/topic/nh8N 著作权归作者所有。请勿转载和采集!