该 SQL 查询语句比较复杂,可以考虑优化如下:

  1. 对于子查询中的 LEFT JOIN 子句,可以使用 EXISTS 子句代替,这样可以避免在子查询中产生过多冗余数据。

  2. 子查询中的 GROUP BY 子句可以省略,因为子查询中只取 ai.instance_id,这样可以提高查询效率。

  3. 对于 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' );

select count1 from SELECT aiinstance_id AS instanceId FROM approval_instance ai LEFT JOIN SELECT

原文地址: https://www.cveoy.top/t/topic/bUFB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录