count(1)、count(*)、count(字段)的區別

 

很多人認爲count(1)執行的效率會比count()高,原因是count()會存在全表掃描,而count(1)可以針對一個字段進行查詢。其實不然,count(1)和count(*)都會對全表進行掃描,統計所有記錄的條數,包括那些爲null的記錄,因此,它們的效率可以說是相差無幾。而count(字段)則與前兩者不同,它會統計該字段不爲null的記錄條數。

下面它們之間的一些對比:

1)在表沒有主鍵時,count(1)比count(*)快;

2)有主鍵時,主鍵作爲計算條件,count(主鍵)效率最高;

3)若表格只有一個字段,則count(*)效率較高。

 

count(1)和count(*)  ---  都爲統計所有記錄數,包括null

執行效率上:當數據量1W+時count(*)用時較少,1w以內count(1)用時較少

count(字段)  ---  統計字段列的行數,不包括null

若字段爲主鍵則count(主鍵)效率最高,否則少量數據時使用count(1)

總結:少量數據不忽略null選count(1),大量數據選count(*),忽略null選count(字段)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章