實際上,count(column) 和 count(*) 是一個完全不一樣的操作,所代表的意義也完全不一樣。
count(column) 是表示結果集中有多少個column字段不爲空的記錄
count(*) 是表示整個結果集有多少條記錄
- count(1)與count(*)比較:
- 如果你的數據表沒有主鍵,那麼count(1)比count(*)快
- 如果有主鍵的話,那主鍵(聯合主鍵)作爲count的條件也比count(*)要快
- 如果你的表只有一個字段的話那count(*)就是最快的啦
- count(*) count(1) 兩者比較。主要還是要count(1)所相對應的數據字段。
- 如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。
- 因爲count(*),自動會優化指定到那一個字段。所以沒必要去count(?),用count(*),sql會幫你完成優化的