1.count(1)和count(*)从执行计划的角度来看,count(1)和count(*)的作用是一样的。当表的数据量较大时,分析表后,使用count(1)比使用count(*)耗时更多!当数据量在1W以内时,count(1)会比count(*)耗时少,但也差不了多少。如果count(1)是聚簇索引,肯定比count(1)快,但差别很小。因为count(),它会自动优化分配给它的字段。所以没必要去count(1),用count(),sql会帮你完成优化因此:有聚集索引的时候count(1)和count(*)基本没有区别!2、count(1)和count(field)的主要区别是count(1)会统计表中的所有记录,包括字段为空的记录。count(field)将统计该字段在表中出现的次数,忽略该字段为空的情况。即不统计字段为空的记录。3、count(*)与count(1)和count(列名)的区别从执行效果上看:count(*)包括所有列,相当于行数。统计结果时,不会忽略NULL值。count(1)包括忽略所有列,用1代表代码行,统计结果时不会忽略NULL值。计数(列名)仅包括列名。统计结果时,忽略为空的列值的计数(这里的空不是指空字符串或0,而是null的意思),即某个字段的值为NULL时,不要数数。在执行效率上:如果列名是主键,count(列名)会比count(1)快。如果列名不是主键,count(1)会比count(columnname)快。(1的执行效率优于count(*),如果有主键,selectcount(主键)执行效率最优,如果表只有一个字段,则selectcount(*)最优.实例分析createtablecounttest(namechar(1),agechar(2));插入counttestvalues('a','14'),('a','15'),('a','15'),('b',NULL),('b','16'),('c','17'),('d',null),('e','');按名称从counttestgroup中选择name、count(name)、count(1)、count(*)、count(age)、count(distinct(age));结果如下:作者:BigoSpritesblog.csdn.net/iFuMI/article/details/77920767
