SELECT followup.followup_user staffId, followup.account_name staffName, count(1) followNumber FROM ( SELECT distinct cf.followup_user, CONCAT(su.account_name, case WHEN su.enable = 2 or su.status = 5 or su.status = 6 then '(已离职)' else '' end) AS account_name FROM crm_followup cf left JOIN crm_sys_user su on cf.followup_user = su.id and su.is_delete = 0 WHERE cf.account_id = 2150088 AND cf.type = 2 AND cf.is_delete = 0 ) followup GROUP BY followup.followup_user ORDER BY followNumber DESC LIMIT 20 这个sql中crm_followup表再另一个库里面,怎么优化
时间: 2024-02-10 22:21:24 浏览: 93
node-data-mapper:使用数据映射器模式的ORM
在这个SQL中,由于涉及到跨库查询,会有一定的性能损耗,可以考虑将两个库合并为一个库,或者使用分布式数据库来优化性能。另外,可以考虑以下几点优化:
1. 尽可能减少子查询的数量。可以将子查询的结果存储到临时表中,然后再进行查询,避免重复查询。
2. 添加索引。对于经常被查询的字段,可以添加索引来提高查询效率,如对于crm_followup表中的account_id、type、is_delete字段,可以添加索引。
3. 优化查询语句。可以使用EXPLAIN命令来查看查询计划,找出慢查询的原因,并进行优化。例如,可以使用JOIN代替子查询。
4. 调整服务器配置。可以增加服务器的处理能力,例如添加更多的CPU和内存,来提高查询效率。
5. 对于跨库查询,可以使用数据同步工具将数据同步到同一个库中,或者使用分布式数据库来优化性能。
阅读全文