一、问题背景
现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下:
这里测试环境构造了500万条数据,模拟了这个慢查询。
简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。
说一下app_account字段的分布情况,随机生成了5000个不同的随机数,然后分布到了这500万条数据里,平均来说,每个app_account都会有1000个是重复的值,种类共有5000个。
二、看执行计划
可以看到,group by字段上是加了索引的,也用到了。
三、优化
优化思路:
思路一:
后面应该加上 order by null;避免无用排序,但其实对结果耗时影响不大,还是很慢。