1. 程式人生 > >【mysql】count(*),count(1)與count(column)區別

【mysql】count(*),count(1)與count(column)區別

count(*)對行的數目進行計算,包含NULL count(column)對特定的列的值具有的行數進行計算,不包含NULL值。 count()還有一種使用方式,count(1)這個用法和count(*)的結果是一樣的。 效能問題 1.任何情況下SELECT COUNT(*) FROM tablename是最優選擇; 2.儘量減少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 這種查詢; 3.杜絕SELECT COUNT(COL) FROM tablename WHERE COL2 = ‘value’ 的出現。 如果表沒有主鍵,那麼count(1)比count(*)快。 如果有主鍵,那麼count(主鍵,聯合主鍵)比count(*)快。 如果表只有一個欄位,count(*)最快。

count(1)跟count(主鍵)一樣,只掃描主鍵。count(*)跟count(非主鍵)一樣,掃描整個表。明顯前者更快一些。