最新消息: 新版网站上线了!!!

mysql order by 和 group by 同时使用时要注意的地方

网上关于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没用聚合函数。于是就可以了。

 
.....

转载请注明:谷谷点程序 » mysql order by 和 group by 同时使用时要注意的地方