SELECT c.*, cu.person_name, comb.comb_name, comp.comp_name, org.org_name sys_org_name, org2.org_name sys_org2_name, gcount FROM cc_bank_card c LEFT JOIN cc_client_user_detail cu ON c.open_user_id = cu.user_id LEFT JOIN cc_company_branch comb ON comb.comb_id = c.comb_id LEFT JOIN cc_company comp ON comp.comp_id = c.comp_id LEFT JOIN sys_org org ON org.org_id = c.sys_org_id LEFT JOIN sys_org org2 ON org2.org_id = c.sys_org2_id INNER JOIN (SELECT id_card, count(card_id) gcount FROM cc_bank_card i WHERE i.delete_flag = 'NOT_DELETE' GROUP BY id_card HAVING count(card_id) >= 2) g ON g.id_card = c.id_card WHERE c.delete_flag = 'NOT_DELETE' ORDER BY gcount DESC, id_card, create_time DESC 这条sql你会怎么去优化
时间: 2024-04-23 12:24:26 浏览: 163
OCA.zip_OCA_optical_optical comb_zip
这条 SQL 语句的主要问题在于它包含了多个 JOIN 操作,而且其中包含了子查询,这可能导致性能瓶颈。为了优化这条 SQL 语句,可以考虑以下几个方面:
1. 尽量避免使用子查询,可以将子查询中的逻辑转换为 JOIN 操作或者使用临时表。
2. 对于 LEFT JOIN 操作,可以考虑将其转换为 INNER JOIN 操作,这样可以减少 JOIN 操作的数量,从而提高查询性能。
3. 尽量减少 SELECT 语句中 SELECT 字段的数量,只选择必要的字段,这样可以减少数据传输的开销。
4. 优化 WHERE 子句中的条件,可以考虑使用索引来加速查询。
5. 对于 ORDER BY 子句中的排序操作,可以考虑对排序字段建立索引,从而提高查询性能。
具体的优化策略需要根据具体的数据情况和业务需求来定制,以上仅供参考。
阅读全文