1. 程式人生 > >count(*),count(1)和count(欄位)的區別

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(*)效率較高。