在执行效果上的区别
count(*)包含了所有的列,相当于行数,在统计结果的时候,不会忽略NULL的值
count(1)包含了忽略所有列,用1代表所有行,在统计的时候,不会忽略NULL值
count(列名)只包含列名那一列,在统计结果的时候,会忽略空值(仅表示为NULL,空字符串和0不算),即某个字段值为NULL时,不统计该内容
在执行效率上的区别
列名为主键,count(列名)会比count(1)快
列名不为主键,count(1)会比count(列名)快
如果表多个列并且没有主键,则count(1)的执行效率优于count(*)
如果有主键,则select count(主键)的执行效率是最优先的
如果表只有一个字段,则select count(*)最优
从数据量角度来看
做统计分析:
当表的数据量大于1w时,count(1)比count(*)用时多
当表的数据量小于1w时,count(1)比count(*)用时少