数据如图:

元图

按照*方式查找 :

SELECT count(*) FROM test

结果如下:
count(*)

按照指定字段查询 :

SELECT count(name) FROM test

结果如下:
count(name)

是按照虚拟字段查询:

SELECT count(1) FROM test

结果如下:
count(1)

为什么会造成以上的差异呢?

原因是:

  1. count(*)其实是按每个字段读一次,对比每个字段的count,最终得出最大值6
    count()
  2. count(name)则是仅读name字段下的值,此刻name中是只有4个值的,其中NULL不占空间
    count(name)
  3. count(1)很有趣,实际上它是虚拟了一个字段,并以此此填充相应记录中的虚拟值,从而得出count(1)为6
    count(1)

总结:

  1. 对于查单个字段总量,可以使用count(字段)
  2. 但很多时候我们查询一般都是查总的记录量的,在数据量少的条件下count(1)和count(*)差异性并不高,但如果数据量达到一定量级可以使用count(1)



X