- select * from(SELECT ctiyid,count(*) as num FROM `$table_name` GROUP BY ctiyid ) st
后来经过测试发现,此方法中,group by子句在扫描表的时候,每一篇文章的都去执行了两次count,因此效率极低
后来优化如下成下面代码
- SELECT cityid, sum( CASE WHEN cityid THEN 1 ELSE 0 END ) AS num FROM `$table_name` GROUP BY cityid
总共只需要执行一次表扫描,并且没有每次都count一下,而是用sum求一个总和,大大了减少了查询时间。效率会提高几百甚至几千倍