count(*),count(1)和count(字段)的區別

之前在寫sql語句時,常常使用count(*)來執行查詢數據條數,也使用過count(字段)來針對某一特殊字段進行查詢,今天接觸到了count(1)也可以用來進行數據統計,下來查看資料,對它們有了一定的瞭解。

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

下面它們之間的一些對比:1)在表沒有主鍵時,count(1)比count(*)快;2)有主鍵時,主鍵作為計算條件,count(主鍵)效率最高;3)若表格只有一個字段,則count(*)效率較高。

count(*),count(1)和count(字段)的區別


分享到:


相關文章: