*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中文網其他相關文章!