count(*) count(1) count(id)
性能:
COUNT(*)=COUNT(1)>COUNT(id)
可能你会疑惑为什么 COUNT (id) 会比前两者慢呢,因为除了计数之外,COUNT (id) 需要把主键的值取出来
通过explain查看执行计划发现:
- COUNT (*) 被 MySQL 的查询优化器改写成了 COUNT (0),并选择了 idx_status 这个索引
- COUNT (1) 和 COUNT (id) 也都选择了 idx_status 这个索引
- 只有在我们加了 force index (primary) 之后,才强制走了主键索引
备注
count()函数不会统计NULL行
id | name |
---|---|
1 | wang |
3 | sun |
count(*) = 3
count(1) = 3
count(id) = 2
【勤则百弊皆除】