當使用COUNT
函數編寫SQL語句時,我有兩個選擇。COUNT SQL函數的性能
SELECT COUNT(*) FROM <table_name>
SELECT COUNT(some_column_name) FROM <table_name>
在性能方面,什麼是最好的SQL語句? 使用選項1可以獲得一些性能增益嗎?
當使用COUNT
函數編寫SQL語句時,我有兩個選擇。COUNT SQL函數的性能
SELECT COUNT(*) FROM <table_name>
SELECT COUNT(some_column_name) FROM <table_name>
在性能方面,什麼是最好的SQL語句? 使用選項1可以獲得一些性能增益嗎?
性能不應該的問題,因爲他們做的2個不同的聚集
COUNT(*)
爲所有行,包括空值COUNT(some_column_name)
,在排除了NULL 「some_column_name
」參見 「Count(*) vs Count(1)」 的問題更多
不,Sql Server沒有性能提升。
選項2實際上統計some_column_name
不爲空的所有字段。選項1計算任何字段不爲空的所有字段。所以你可能會從這兩個查詢中得到不同的結果。大多數時候,你居然要計數所有行,然後最快的選項,不檢查任何字段的時候,簡直是SELECT COUNT(1) FROM ...
請參閱此計數(*)與計數(1)http://stackoverflow.com/questions/1221559/ – gbn 2009-11-17 10:53:28
計數(*)還計算所有行,而不是任何值的行不爲空。就性能而言,Count(*)和Count(1)是相同的,因爲查詢優化器可以識別您正在嘗試執行的操作並生成相同的執行計劃。 – 2009-11-17 10:56:15
SQL Server? MySQL的? – gbn 2009-11-17 11:00:17
我正在使用MS SQL Server 2005 – 2009-11-17 11:41:07