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

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

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

不少人認爲count(1)執行的效率會比count()高,緣由是count()會存在全表掃描,而count(1)能夠針對一個字段進行查詢。其實否則,count(1)和count(*)都會對全表進行掃描,統計全部記錄的條數,包括那些爲null的記錄,所以,它們的效率能夠說是相差無幾。而count(字段)則與前二者不一樣,它會統計該字段不爲null的記錄條數。sql語句

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

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

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

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

相關文章
相關標籤/搜索