指引网

当前位置: 主页 > 数据库 > MySQL >

mysql group by count用法及性能问题

来源:网络 作者:佚名 点击: 时间:2017-08-03 21:30
[摘要] 今天在做项目的时候,需要查询出每个市里的所有会员总数,数据库大概字段有,uid,uname,ctiyid(市id)刚开始我是使用如下语句查询select*f...
今天在做项目的时候,需要查询出每个市里的所有会员总数,数据库大概字段有,uid,uname,ctiyid(市id)
刚开始我是使用如下语句查询

  1. select *  from(SELECT ctiyid,count(*) as num FROM `$table_name`  GROUP BY ctiyid  ) st 

后来经过测试发现,此方法中,group by子句在扫描表的时候,每一篇文章的都去执行了两次count,因此效率极低

后来优化如下成下面代码
 

  1. SELECT cityid, sumCASE WHEN cityid THEN 1 ELSE 0 END ) AS num FROM `$table_name` GROUP BY cityid 

总共只需要执行一次表扫描,并且没有每次都count一下,而是用sum求一个总和,大大了减少了查询时间。效率会提高几百甚至几千倍


 

------分隔线----------------------------