MySQL统计数据count(*) 和 count(1) 什么区别??
1.查询数据结果集没有区别
cite : http://stackoverflow.com/questions/3003457/count-vs-countcolumn-name-which-is-more-correct
2.性能区别区别
记得看《sql 沉思者》中提及部分数据库对count(1)的优化
在部分数据库下,会对select count(1)做优化,导致select count(1) better than select count(*)
看到这个问题,我不清楚mysql下是否存在相同的问题,所以做了一个查询工作
cite :http://www.phpddt.com/db/mysql-count-1.html
然后我就继续google了,针对mysql镜像查询
cite :http://boards.straightdope.com/sdmb/showthread.php?t=455365
参看十五十六楼的回答,证实了 mysql 下 select (1) is faster than select(*)
建议查询的时候尽量使用select (1) 替代select (*)
不好意思,第一次的回答确实错了,我试验一下,
1.count(1)
和count(*)
是一样的,都返回包括null
在内的值,1
不是指的第一列!当然count(2)
和count(1)
是一样的。
2.count(column)
和count(*)
是不一样的,column
是字段名,通过count(column)
取出来的值是不包括null的。
呜呜,题主真是不好意思,差点误导你。
我记得count(1)只扫描主键Index就可以得到数据,count(*)是扫描表的,效率上有所不同,其他就如上面的所说,与count(column)关于Null的判断
7 回答5.3k 阅读
5 回答3.2k 阅读✓ 已解决
3 回答3.9k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
没有区别.
http://dev.mysql.com/doc/refman/5.6/en/group-by-functions.html#function_count