2015-01-06 86 views

回答

3

沒有區別。

Select Count(*) from TableName 
Select Count(1) from TableName 

這是非常普遍認爲的計數(1)有更好的表現相比,計數(),然而,它不是這種情況。如果您通過查看執行計劃進行測試,則會看到正在執行的命令以及正在掃描的相同行數。所花費的時間可能與CPU使用次數()略有不同,但與count(1)幾乎相同。這種混淆通常是因爲在Oracle的一些RDBMS產品的舊版本中,select count(*)和count(1)在性能上存在差異,但最近的版本沒有任何區別。

參見本: http://www.sqlserverf1.com/difference-between-select-count-and-count1-in-sql-server/

Count(*) vs Count(1)

+0

有什麼區別? – bilal

+0

@bilal沒有區別。 ..檢查帖子:http://stackoverflow.com/questions/1221559/count-vs-count1 – Backtrack

+1

我認爲執行成本的混亂也是由於'SELECT *'通常比'SELECT 1'更昂貴或者'SELECT intColumn'。當然,'COUNT(*)'在分析器/引擎中會有特定的優化代碼,這會識別出不需要獲取每列的內容。 – Turophile

相關問題