mysql千万数据量,查询or索引优化
表有1千万+的数据。
sql:
select apkid,
sum(case when actionname='showad' then actioncount else 0 end) as showad,
sum(case when actionname='downloadad' then actioncount else 0 end) as downloadad,
sum(case when actionname='installres' then actioncount else 0 end) as installres
from appsearch_sdk_uuc_useraction
where dt >=20170303 and dt <=20170310
group by apkid
已有的索引:
PRIMARY KEY (`dt`,`apkid`,`actionname`),
KEY `IDX_dt_actionname_apkid` (`dt`,`actionname`,`apkid`)
但是explain的时候,并未走索引,查询时间也都在10s以上。。。
后面又用select+union去查, 也是一样。
求解如何优化sql或者索引。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我看你这种逻辑,很多都是“重复的无用功”
时间串都是过去的串,想象中这些时间上的统计不太会变了。那样的话,每天跑一轮,放在专门的statistics表。
以后随便取就行了。。。
这样,你一年下来,这个表也就1000+行
应该走索引才对,你可以先试试单独查select apkid from appsearch_sdk_uuc_useraction
where dt >=20170303 and dt <=20170310 看看是否走索引,再一步一步调试
估计是就日期分布范围太小了。。无法使用索引。。