mysql 里面的count(*) count(1) 和 count(列名)区别
在mysql 里面常见的统计数量,经常用到的count函数,count(1) 、count(*)、count(列名)
还是有点细微的差别的
count(1) 、count(*)
都可以用来进行统计行数,区别在于 count(1) 是基于1这个常量进行统计的,而count(*)则是统计所有行,但是这两种方式能是相同,因为在执行时,mysql会进行遍历,而无论是基于1还是*,每行都进行统计
count(列表)
count(列名)是基于某一列进行统计的方式。在进行统计时,MySQL会跳过该列为NULL的行,因此它的统计结果可能会小于表中的总行数。因此,当统计某一列非NULL值的数量时,可以使用count(列名)
注意:当列名是主键时,count(列名)和count(*)的性能是相同的,因为主键列不允许出现NULL值。但是,当列名不是主键时,使用count()会比count(列名)更快,因为MySQL不需要检查该列是否为NULL。