如何在mysql中优化group_concat子查询?

时间:2017-12-07 03:52:50

标签: mysql sql

如何优化此查询?它花了很多时间来执行。

SELECT GROUP_CONCAT(`details_value`), details_key  
  FROM `correspondence_package_details` 
 WHERE `correspondence_id` IN (SELECT GROUP_CONCAT(`correspondence_id`) 
                                 FROM `correspondence_package_header` 
                                WHERE create_date BETWEEN '2017-11-01' AND '2017-11-30' 
                               GROUP BY `manual_package_id`,account_id) 
   AND (`details_key` = 'to' OR `details_key` = 'cc') 
 GROUP BY details_key;

1 个答案:

答案 0 :(得分:0)

查询优化既是艺术又是科学。只需查看sql,就可以限制您的选择。

  1. 对您的查询运行解释计划。检查低性能连接类型和扫描。
  2. 在所有连接列上添加适当的索引。
  3. 对于日期字段,请根据您是否正常查询最新或最旧的记录对索引进行排序。
  4. 定期在数据库上运行optimize命令,以便快速调整索引和表空间。
  5. 查询计划将是您的最佳工具。