首頁 >資料庫 >mysql教程 >SQL Server 中的 Count(*) 與 Count(1):是否有效能差異?

SQL Server 中的 Count(*) 與 Count(1):是否有效能差異?

Barbara Streisand
Barbara Streisand原創
2025-01-23 18:22:08656瀏覽

Count(*) vs. Count(1) in SQL Server: Is There a Performance Difference?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn