sql数据库查询数据量太大查不出来

我需要出一个数据统计的报表,大概要查6张表,一张表大概是200w记录左右

select dt,num,count(*) from
    (SELECT
        CONCAT(YEAR (create_time),'年',WEEK(create_time),'周') dt,
        COUNT(1) AS num
    FROM mail_record202108
    GROUP BY dt,`to` ORDER BY WEEK(create_time))t1
group by num order by dt,num;

由于数据量大而且查询复杂,一直查询超时,有什么办法吗?create_time和to都是索引

阅读 3.2k
1 个回答

虽然你加了索引,但是函数会让索引失效。尽可能在索引列上完成排序操作,遵照索引建的最佳最前缀。同时索引的话要建立复合索引,因为MySQL一般只会选择一个索引来使用。具体的最好使用explain查看执行计划,看看具体慢在那里,再具体的优化。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题