MySQL調優--Usingfilesort
出現這個問題的原因在於 MySQL 每次查詢只能使用一個索引, 而你的 SQL 語句 WHERE 條件和 ORDER BY 的條件不一樣, 索引沒建好的話, 那麼 ORDER BY 就使用不到索引, 出現了 Using filesort 問題。
解決這個問題就是建立一個包含 WHERE 和 ORDER BY 條件的混合索引。
比如原來 SQL 語句是:
SELECT * FROM user u where u.id=100 order by u.update_time
而索引是 idx_user_id(id)
現在重新建立索引為 idx_user_id_update_time(id,update_time)
再使用 EXPLAIN 命令查看, 如果 key 使用的是上述新建的 idx_user_id_update_time 索引, 則可以看到 Using file sort 問題消失了, 如果 key 不是使用新建 idx_user_id_update_time 索引, 可以使用 force index() 方法強制使用這個索引, 此時 using filesort 問題就解決了。
SELECT * FROM user u force index(idx_user_id_update_time) where u.id=100 order by u.update_time