我想從2.5秒爲mysql計數查詢減少加載時間。查詢中的所有列都有一個索引。MySQL計數優化
SELECT COUNT(1)
FROM song AS s
JOIN song_text AS st
ON(st.song_id = s.song_id)
JOIN phpfox_user AS u
ON(u.user_id = s.user_id)
WHERE st.lyrics LIKE '%a%' AND s.is_active = 1 AND s.public = 1
獲取返回行的查詢在0.0009060秒內加載。
SELECT s.*, st.lyrics, u.first_name
FROM song AS s
JOIN song_text AS st
ON(st.song_id = s.song_id)
JOIN phpfox_user AS u
ON(u.user_id = s.user_id)
WHERE st.lyrics LIKE '%a%' AND s.is_active = 1 AND s.public = 1
ORDER BY s.date_added DESC
LIMIT 12
爲什麼計數查詢比返回行的查詢有更多的加載時間?可以採取什麼措施將計數查詢的加載時間減少到類似於其他查詢的時間?
你試過在查詢上運行'EXPLAIN'嗎?這應該給你一些見解。我相信@AdityaNaidu可能是正確的 - 第二個查詢中的「LIMIT」可能會過濾第一個查詢中所需的大量工作。 – evan 2012-02-07 22:28:02
從第二個查詢中刪除「LIMIT」子句併發布查詢時間。使用'SELECT SQL_NO_CACHE <查詢的其餘部分>'從等式中刪除緩存。 – 2012-02-07 22:40:47
從第二個查詢中刪除限制導致查詢時間爲7.6967690秒。 – user1195817 2012-02-07 22:53:19