优秀的编程知识分享平台

网站首页 > 技术文章 正文

mysql count(1)、count(*) 与 count (列名) 的执行区别

nanyue 2025-07-02 23:25:42 技术文章 1 ℃

在 MySQL 中,`COUNT` 函数用于统计行数或非NULL值的数量,而括号中的参数可以是数字、*、或字段名。这些参数之间有一些区别:

1. COUNT(1):

这会统计选定的行的数量,而不考虑行中的任何具体数据。`COUNT(1)` 通常用于提高性能,因为它不需要检查行中的具体数据,只需对行数进行计数。

2. COUNT(*):

这也会统计选定的行的数量,但与 `COUNT(1)` 不同的是,它会统计包括NULL值的行。`COUNT(*)` 会计算所有行,包括具有NULL值的行。

3. COUNT(字段名):

这会统计指定字段中非NULL值的数量。它只计算在指定字段中包含有效数据的行数,而不考虑NULL值。这可以用于统计某个字段中的非NULL值的数量。


COUNT(1) 和 COUNT(*) 通常用于统计行数,其中 COUNT(*) 包括NULL值的行。

COUNT(字段名) 用于统计指定字段中的非NULL值的数量。



执行效率上:

列名为主键,count(列名)会比count(1)快

列名不为主键,count(1)会比count(列名)快

如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)

如果有主键,则 select count(主键)的执行效率是最优的

如果表只有一个字段,则 select count(*)最优。

最近发表
标签列表