count(*)對行的數目進行計算,包含NULL
count(column)對特定的列的值具有的行數進行計算,不包含NULL值。
count()還有一種使用方式,count(1)這個用法和count(*)的結果是一樣的。
任何情況下select count(*) from tablename是最優選擇;
盡量減少select count(*) from tablename where COL = ‘value’這種查詢;
杜絕select count(COL) from tablename where COL2 = ‘value’的出現。
如果表沒有主鍵,那么count(1)比count(*)快。
如果有主鍵,那么count(主鍵,聯合主鍵)比count(*)快。
如果表只有一個字段,count(*)最快。
count(1)跟count(主鍵)一樣,只掃描主鍵。count(*)跟count(非主鍵)一樣,掃描整個表。明顯前者更快一些。
若含有where語句,則會優先where中條件索引。