count(*) count(1) count(id)

性能:

COUNT(*)=COUNT(1)>COUNT(id)

可能你会疑惑为什么 COUNT (id) 会比前两者慢呢,因为除了计数之外,COUNT (id) 需要把主键的值取出来

通过explain查看执行计划发现:

  1. COUNT (*) 被 MySQL 的查询优化器改写成了 COUNT (0),并选择了 idx_status 这个索引
  2. COUNT (1) 和 COUNT (id) 也都选择了 idx_status 这个索引
  3. 只有在我们加了 force index (primary) 之后,才强制走了主键索引

备注

count()函数不会统计NULL行

id name
1 wang
3 sun

count(*) = 3

count(1) = 3

count(id) = 2

posted @ 2021-01-13 13:43  vaen  阅读(143)  评论(0)    收藏  举报