网上关于group by的优化那三点已经写了。这里我想说的是group by和聚合函数一起使用的时候.难免要做次全表查询。数据量一大。就慢了。下午我测试了一个select id,title,count(distinct(uid)) from abc where yz=1 group by uid order by updatetime desc limit 10; 这样的语句。
在数据量在50W左右的时候。他用了四五秒才出来结果。这句的意思很明显。查表中前10条不同用户发布的信息,按更新时间倒序。
无论怎么弄索引依然很慢。最后不得不放弃。换个思路。先做一个
select distinct(uid) from abc where yz=1 order by updatetime desc limit 10;
然后再把select id,title from abc where yz=1 and uid in(上面得到的数) group by uid order by updatetime desc limit 10;
这样分开做。第一步用聚合函数没用group by 第二步用了group by没用聚合函数。于是就可以了。