解决这个问题就是建立一个包含 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