一、count() 优化
误区:myisam的count()非常快
答: 是比较快,.但仅限于查询表的”所有行”比较快, 因为Myisam对行数进行了存储.;一旦有条件的查询, 速度就不再快了.尤其是where条件的列上没有索引.
例如:想查询id>=100的商家有多少?
select count(*) from store where id>=100; (1000多万行用了6.X秒)
小技巧:
select count(*) from store; 快
select count(*) from store where id<100; 快
select (select count(*) from store) - (select count(*) from store where id<100)
二、 group by
注意:
1:分组用于统计,而不用于筛选数据;比如: 统计平均分,最高分,适合, 但用于筛选重复数据,则不适合,以及用索引来避免临时表和文件排序
2: 以A,B表连接为例 ,主要查询A表的列, 那么 group by ,order by 的列尽量相同,而且列应该显示声明为A的列
三、union优化
注意: union all 不过滤,效率提高,如非必须,请用union all
因为 union去重的代价非常高, 放在程序里去重.