作用:
1.統計某列值的數量(統計非null)
2.統計行數
count統計非空列值的數量時,MySQL的優化器會自動轉成count(*)統計行數。
對于MyISAM存儲引擎來說
insert、select是很快的,count對于沒有where條件的SQL統計是很快的。
優化:
SELECT COUNT(*) FROM user WHERE id>5 可用下面這條sql代替
SELECT (SELECT COUNT(id) FROM sms ) - (SELECT COUNT(*) FROM sms WHERE id<=5)
對于InnoDB來說
會全表掃描,資料越多花費的時間就越久,使用count(*)就行,沒必要使用count(1)\count(列名)。
優化:
1. 如果對count數要求不高的話,可用使用EXPLAIN中的rows字段代替。
2.水準分割、更換nosql資料庫等。
推薦書籍:高性能MySQL