Skip to content

MySQL count()函数

count() 简介

count() 是一个聚合函数,函数的参数不仅可以是字段名,也可以是其他任意表达式,该函数作用是统计符合查询条件的记录中,函数指定的参数不为 NULL 的记录有多少个。

count(*) 和 count(1)

在 MySQL 5.7 的官方手册中有这么一句话

  • "InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference."
  • "InnoDB以相同的方式处理SELECT COUNT(*)和SELECT COUNT(1)操作,没有性能差异。"

执行方式

MySQL逐行查询记录,如果表达式 count(*)/count(1) 不为NULL,则加记录数1, 因为count(*) 实质会转化为 count(0), count(0)和count(1) 总是不为NULL

count(id)

执行方式

MySQL逐行查询记录,如果表达式 count(id) 不为NULL,则加记录数1 会去判断id的值,故效率略低于count(*)和count(1)

结论

count(*) = count(1) > count(id) >= count(xx)