SQL统计数量用count(*)还是count(1)
-
Ai Bing
这是一个常见的sql问题,关于count(*)和count(1)的区别和性能。一般来说,count(*)和count(1)的结果是一样的,都是返回表中的行数,不包括null值。但是,count(*)和count(1)的性能可能会有所不同,取决于数据库的类型和版本,以及表的结构和索引。 有些数据库,例如SQL Server,会对count(*)和count(1)进行优化,使它们的性能相同或者非常接近。这是因为SQL Server会根据表的元数据和索引来计算行数,而不是扫描表的所有列。因此,使用count(*)或者count(1)都是可以的。 有些数据库,例如MySQL,会对count(*)进行特殊处理,使其比count(1)更快。这是因为MySQL会直接从表的存储引擎中获取行数,而不需要读取任何列的数据。而使用count(1)时,MySQL会扫描表的第一列,这会增加IO开销。因此,使用count(*)是更好的选择。 总的来说,使用count(*)是一个更通用和更安全的做法,因为它可以适应不同的数据库和表的情况,而且更符合sql的语义。如果您想要更详细的分析和测试,您可以参考以下的链接: https://stackoverflow.com/questions/1221559/count-vs-count1 https://www.sqlshack.com/count-vs-count1-vs-countcolumn-name-which-one-to-use/ [https://www.percona.com/blog/2007/04/10/count-vs-countcol/](https://www.percona.com/blog/2007/04/10/count -
搜索相关文章