*SQL Server:Count() 与 Count(1) – 性能分析**
许多 SQL 用户想知道 COUNT(*)
和 COUNT(1)
之间的性能差异。 这两个函数都对行进行计数,但是对性能有真正的影响吗?
在 SQL Server(特别是 2005 年以后的版本)中,答案很简单:不存在显着的性能差异。
Microsoft 的文档阐明 COUNT(*)
计算表中的所有行(或满足指定条件的行)。 至关重要的是,COUNT(1)
(因为“1”是非空表达式)产生相同的结果。
SQL Server 查询优化器识别这种等价关系。 它以相同的方式对待这两个函数,从而产生相同的执行计划、I/O 操作以及最终的性能。
考虑这些例子:
<code class="language-sql">SELECT COUNT(1) FROM dbo.tab800krows; SELECT COUNT(1), FKID FROM dbo.tab800krows GROUP BY FKID; SELECT COUNT(*) FROM dbo.tab800krows; SELECT COUNT(*), FKID FROM dbo.tab800krows GROUP BY FKID;</code>
执行这些查询将产生相同的结果,从而确认 COUNT(*)
和 COUNT(1)
的功能等效。 因此,它们之间的选择很大程度上取决于编码风格或个人喜好;它不会影响 SQL Server 中的查询性能。
以上是SQL Server 中的 Count(*) 与 Count(1):是否存在性能差异?的详细内容。更多信息请关注PHP中文网其他相关文章!