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

查询一:

mysql> select count(*) as totalnum fromsphinx;
+———-+
| totalnum |
+———-+
1120100 |
+———-+
1 row in set (0.00sec)

查询二:

mysql> select count(*) as totalnum from sphinxwhere id>1000;
+———-+
| totalnum |
+———-+
1119100 |
+———-+
1 row in set (2.17sec)

查询三:

mysql> select count(*) as totalnum from sphinxwhere id>1000;
+———-+
| totalnum |
+———-+
1119100 |
+———-+
1 row in set (0.61sec)


查询五:

mysql> select count(id) as totalnum fromsphinx;
+———-+
| totalnum |
+———-+
1120100 |
+———-+
1 row in set (0.00sec)

查询六:

mysql> select count(til) as totalnum from sphinxwhere id>1000;
+———-+
| totalnum |
+———-+
1119100 |
+———-+
1 row in set (1 min38.61 sec)

查询七:

mysql> select count(id) as totalnum from sphinxwhere id>11000;
+———-+
| totalnum |
+———-+
1109100 |
+———-+
1 row in set (0.61sec)

查询八:

mysql> select count(id) as totalnum fromsphinx;
+———-+
| totalnum |
+———-+
1120100 |
+———-+
1 row in set (0.03sec)

结论:

在 select count() 没有 where 条件的时候 select count(*) 和 selectcount(col) 所消耗的查询时间相差无几。
在 select count() 有 where 条件的时候 select count(col) 所消耗的查询时间 比 selectcount(*) 明显多出数量级的时间。

转载自http://getroad.cn/blog/?action=show&id=750
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值