暂无图片
sql数据库查询数据量太大查不出来
我来答
分享
黎琛
2021-09-26
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条回答
默认
最新
Uncopyrightable

使用explian查看下执行计划,根据extra列进行优化
可以看看之前墨天轮大神留的文档:
https://www.modb.pro/db/47381

暂无图片 评论
暂无图片 有用 0
暂无图片
Murkey

你这个需要提供执行计划,表的统计信息

暂无图片 评论
暂无图片 有用 0
chengang

两个优化点
1、建一个联合索引,走索引覆盖吧(dt,to,create_time)
2、我总觉得外层的那个group by 没有必要。如果是标准的group by 的话。外层就完全没有必要。这个要根据业务来。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏