2009-11-17 76 views
3

示例表的結構:的Sql COUNT性能問題

Id, Integer (PK) 
Name, Varchar(100) 
Description, Text 

我需要知道,如果在兩者之間的性能存在差異:

SELECT COUNT(*) FROM Example; 

SELECT COUNT(Id) FROM Example; 

或者不存在差異?

回答

2

差異在性能和實際結果集存在

Performance of COUNT SQL function

+1

因爲id是PK,所以(希望!)不太可能會包含NULL,我認爲這是結果的主要區別。 – davek 2009-11-17 13:25:12

+0

謝謝,我沒有找到這個問題。 – Cesar 2009-11-17 13:27:34

+0

@davek - 由於'id'是PK,所以不允許它包含空值。這個答案是不正確的。性能和結果集將是相同的。 – 2012-10-22 10:34:34

0

檢查解釋計劃:做的結果是來自該表或從元數據(例如INFORMATION_SCHEMA)?:的差異可能是非常小的。

0

我相信是有區別的;取決於你的桌子的大小,它可能可以忽略不計,或者它可能很重要。

這可能是最慢的:SELECT COUNT(*)FROM例
這是在中間:SELECT COUNT(同上)實例
這將是最快的:SELECT COUNT(1)實例

+0

也取決於你想要計數。例如,Id可能永遠不會爲null(如果您正確地做),但count(*)將只計算沒有空值的行。 – tsilb 2009-11-17 13:42:44

0

值得一讀的,但不幸的是在俄羅斯。

COUNT(*), could it be faster?

短篇小說是COUNT(*)不是那麼有效,因爲直接訪問dm_db_partition_stats