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

    关于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)了。

上一篇:Spark集群搭建


下一篇:触发器里面before和after的区别