有关 mysql count(*) 与 count(col) 查询效率的比较分析,感兴趣的朋友可以参考下。
优化总结:
1、任何情况下SELECT COUNT(*) FROM xxx 是最优选择;
2、尽量减少SELECT COUNT(*) FROM xxx WHERE COL = ‘xxx’ 这种查询;
3、杜绝SELECT COUNT(COL)FROM tablename WHERE COL = ‘xxx’ 的出现。(其中COL非主键)
环境:
MySQL版本:5.0.45
OS:Windows XP SP3
数据表一:sphinx
+———-+——————+——+—–+———+—————-+
| Field |Type | Null | Key | Default |Extra |
+———-+——————+——+—–+———+—————-+
|id | int(10) unsigned | NO | PRI |NULL |auto_increment |
|til |varchar(100) | NO | | | |
| content |text | NO | | | |
| dataline |int(11) | NO | | | |
+———-+——————+——+—–+———+—————-+
记录数:1120100
查询一:
查询二:
查询三:
查询五:
查询六:
查询七:
查询八:
总结:
1、在 select count() 没有 where 条件的时候 select count(*) 和 selectcount(col) 所消耗的查询时间相差无几。
2、在 select count() 有 where 条件的时候 select count(col) 所消耗的查询时间 比 selectcount(*) 明显多出数量级的时间。