MySQL优化之COUNT()效率
2012-09-12 14:39
253 查看
COUNT(*)与COUNT(COL)
网上搜索了下,发现各种说法都有:
比如认为COUNT(COL)比COUNT(*)快的;
认为COUNT(*)比COUNT(COL)快的;
还有朋友很搞笑的说到这个其实是看人品的。
在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;
但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;(待测)
具体的数据参考如下:
[SQL] select count(*) from campaign_content_report (存在主键)
10次测试
最快时间: 0.011ms
最慢时间: 0.908ms (应该很服务器响应时间有关)
命中最多的范围:0.011ms~0.014ms
[SQL] select count(*) from campaign_content_report where campaign_id = '11081911350290' (存在主键)
受影响的行: 0
最快时间: 0.014ms
最慢时间: 0.024ms
[SQL] select count(campaign_id) from campaign_content_report where campaign_id = '11081911350290'
受影响的行: 0
最快时间: 0.014ms
最慢时间: 0.019ms
COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。
如果表没有主键,那么count(1)比count(*)快。
如果有主键,那么count(主键,联合主键)比count(*)快。
如果表只有一个字段,count(*)最快。
网上搜索了下,发现各种说法都有:
比如认为COUNT(COL)比COUNT(*)快的;
认为COUNT(*)比COUNT(COL)快的;
还有朋友很搞笑的说到这个其实是看人品的。
在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;
但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;(待测)
具体的数据参考如下:
[SQL] select count(*) from campaign_content_report (存在主键)
10次测试
最快时间: 0.011ms
最慢时间: 0.908ms (应该很服务器响应时间有关)
命中最多的范围:0.011ms~0.014ms
[SQL] select count(*) from campaign_content_report where campaign_id = '11081911350290' (存在主键)
受影响的行: 0
最快时间: 0.014ms
最慢时间: 0.024ms
[SQL] select count(campaign_id) from campaign_content_report where campaign_id = '11081911350290'
受影响的行: 0
最快时间: 0.014ms
最慢时间: 0.019ms
COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。
如果表没有主键,那么count(1)比count(*)快。
如果有主键,那么count(主键,联合主键)比count(*)快。
如果表只有一个字段,count(*)最快。
相关文章推荐
- MySQL优化之COUNT(*)效率
- [转]MySQL优化之COUNT(*)效率
- MySQL优化之COUNT(*)效率
- MySQL优化--1亿条数据效率COUNT(*)
- [转]MySQL优化之COUNT(*)效率
- MySQL优化之COUNT(*)效率
- [转]MySQL优化之COUNT(*)效率
- MySQL优化之COUNT(*)效率
- MySQL优化之COUNT(*)效率
- Mysql 优化之 select count 效率
- MySQL优化之COUNT(*)效率
- MySQL查询优化--数据类型与效率
- MySQL的count(*)比count(1)效率要高
- MYSQL查询优化:数据类型与效率
- Mysql查询效率优化
- Mysql中count(*),DISTINCT的使用方法和效率研究
- MySQL之count(*)与count(id)效率比较
- 关于mysql执行效率优化注意事项及要点(上)
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql 多表联合查询效率分析及优化