SQL语句中count(1)和count(*)的区别

时间:2025-05-15 08:09:12

   

最近使用count函数比较多,当要统计的数量比较大时,发现count(*)花费的时间比较多,相对来说count(1)花费的时间比较少。

查了一些文档有以下的说法:

如果你的数据表没有主键,那么count(1)比count(*)快  

如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快  

如果你的表只有一个字段的话那count(*)就是最快的啦  

count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。  

如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。  

因为count(*),自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的 

  count详解: 

count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入). 

distinct 列名,得到的结果将是除去值为null和重复数据后的结果