COUNT(*)和COUNT(table.ColumnName)有什麼區別?COUNT(*)和COUNT(table.ColumnName)之間有什麼區別?
我一直認爲將列名作爲COUNT
的參數會更快,但現在當我想到它時,我真的不知道,因爲*
意味着該函數計算行數,所以可能沒有有什麼區別?或者,也許給一個特定的列名甚至會減慢過程?
COUNT(*)和COUNT(table.ColumnName)有什麼區別?COUNT(*)和COUNT(table.ColumnName)之間有什麼區別?
我一直認爲將列名作爲COUNT
的參數會更快,但現在當我想到它時,我真的不知道,因爲*
意味着該函數計算行數,所以可能沒有有什麼區別?或者,也許給一個特定的列名甚至會減慢過程?
這兩者之間的差異不是(主要)表現。他們算不同的東西:
COUNT(*)
計數您的表中的行。
COUNT(column)
統計列中的條目 - 忽略null
值。
當然,這兩者之間會有性能差異,但如果他們做了不同的事情,這是可以預料的。特別是當該列允許值爲null
時,查詢將花費的時間比不列的列(或COUNT(*)
)長。
COUNT(*)
返回的所有記錄
COUNT(table.ColumnName)
返回所有非空值的計數的計數。
請參閱Microsoft文檔:
http://technet.microsoft.com/en-us/library/ms175997.aspx
ALL
進行聚合函數所有值。 ALL是默認值。
DISTINCT
指定COUNT返回唯一非空 值的數量。
閱讀成績[COUNT(*)vs COUNT(col)](http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/) –