数据如图:

按照*方式查找 :
SELECT count(*) FROM test
结果如下:
按照指定字段查询 :
SELECT count(name) FROM test
结果如下:
是按照虚拟字段查询:
SELECT count(1) FROM test
结果如下:
为什么会造成以上的差异呢?
原因是:
- count(*)其实是按每个字段读一次,对比每个字段的count,最终得出最大值6

- count(name)则是仅读name字段下的值,此刻name中是只有4个值的,其中NULL不占空间

- count(1)很有趣,实际上它是虚拟了一个字段,并以此此填充相应记录中的虚拟值,从而得出count(1)为6

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