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