到底应该使用count(*) 还是count(1)

简介:     关于count方法一直存在争议,count(*)、count(列名)、count(常量),到底应该使用哪个?我认为应该是count(*),count(*)是SQL92定义的标准统计数的方法。

    关于count方法一直存在争议,count(*)、count(列名)count(常量),到底应该使用哪个?我认为应该是count(*),count(*)SQL92定义的标准统计数的方法。我曾经有幸阅读过阿里巴巴的开发规范,里面提到强制使用count(*)。

      我通过以下四个查询命令来说明三个方法的区别:

     1.select count(*) from emp;
     2.select count(1) from emp;
     3.select count(job) from emp;
     4.select count(*) from emp where jobis not null;

      第一条命令查出的结果是员工的数量。

      第二条命令查出的结果是员工的数量。

      第三条命令查出的结果是工种不为空的员工的数量。

      第四条命令查出的结果是工种不为空的员工的数量。

      显然,第一条与第二条的效果相同,第三条与第四条的效果相同。

    至于1,2为什么选择1,因为1大家都能看懂,2已经不止一个人问过我是什么意思。至于3,4为什么选择4,因为4大家都能看懂,3会给不同的读者带来不同的理解。

       有部分人可能会说count(*)没有count(1)的效率高,我在一张包含33554432条记录的表中,使用count(*)和count(1)测试,所消耗的时间都是34秒之间。

       所以,大家完全可以不要因为效率问题而选择使用count(1)了。

目录
相关文章
|
4月前
count(*) 和 count(1)和count(列名)区别
count(*) 和 count(1)和count(列名)区别
206 0
|
存储 SQL 关系型数据库
count(1)、count(具体字段)和count(*)究竟有什么区别?
count(1)、count(具体字段)和count(*)究竟有什么区别?
136 0
|
数据库 OceanBase
LIMIT_ROW_COUNT
LIMIT_ROW_COUNT
99 1
|
SQL 数据可视化 关系型数据库
count(列名) ,count(1)与count(*) 有何区别?
count(列名) ,count(1)与count(*) 有何区别?
|
SQL 索引
Count(1) Count(0) Count(*) Count(列名)
Count(1) Count(0) Count(*) Count(列名)
159 0
|
SQL 关系型数据库 MySQL
|
SQL Oracle 关系型数据库
count函数
count函数
156 0
|
存储 SQL 缓存
count(*)那么慢能用吗,该怎么办呢?
大家好前面我们大概了解了为什么delete from表名,表的大小还是没有变小!以及数据删除流程,数据页空洞,online和inplace。重建表的两种实现方式。今天介绍一下为什么count(*)那么慢。
count(*)那么慢能用吗,该怎么办呢?
|
索引
select count(*)和select count(1)的区别
一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的     假如表沒有主键(Primary key), 那么count(1)比count(*)快,     如果有主键的話,那主键作为count的条件时候count(主键)最快     如果你的表...
992 0