虚拟主机域名注册-常见问题数据库问题 → MySQL


count(*),count(1)和count(主键)的区别
作者:

如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null.

如:

ID     DD

1      e

2    null

select  count(*) from table  --结果是2

select  count(DD)  from table  ---结果是1

有说count(1)效率高,感觉差不多..没啥区别

补充一下。

不考虑Null的情况

count(1)和count(主键) 这两个只扫描主键Index就可以得到数据,

count(*)是扫描表的。

所以count(1)和count(主键)这两个效率高。

还有一种写法是count(ROWID)这也是只扫描Index的,效率高。

这个帖子里面的楼主的测试数据,不知道在什么情况下。

我在300万业务数据上测试的结果是count(ROWID),count(1),count(主键)这个三种情况速度差不多,

count(*)这种明显慢,察看执行计划,COUNT(*)时候走的是全表查询。



来源:
阅读:1971
日期:2017-02-15

推荐朋友 】 【 评论 】  【 字体: 】 
上一篇:mysql充分利用CPU多核的处理能力
下一篇:关于MySQL 优化的100个重要建议你知道吗?
  >> 相关文章
 
发表评论


点  评: 字数0
用户名:  密码:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款