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(*)最快。mysql
count(1)跟count(主鍵)同樣,只掃描主鍵。count(*)跟count(非主鍵)同樣,掃描整個表。明顯前者更快一些。sql
來自:http://blog.csdn.net/lzm18064126848/article/details/50491956性能
關於count(1), count(*)不一樣引擎的性能影響,能夠參考這篇博客 :mysql中count()統計總結與思考.net