MySQL 排序优化实战:告别 Using temporary,复杂查询从 3s 降至 50ms!
在数据库优化中,排序操作是最常见的性能瓶颈之一。当你的 SQL 查询包含 ORDER BY、GROUP BY、DISTINCT 等操作时,如果没有合适的索引,MySQL 可能会产生 Using temporary 和 Using filesort,导致查询性能急剧下降。 问题背景 假设我们有一个电商订单表,需要查询"2024年1月上海地区用户的订单列表,按订单金额降序排列": SELECT o.order_id, o.user_id, o.amount, o.create_time, u.username, u.phone, s.shop_name FROM orders o JOIN users u ON o.user_id = u.user_id JOIN shops s ON o.shop_id = s.shop_id WHERE o.create_time >= '2024-01-01' AND o.create_time < '2024-02-01' AND u.city = '上海' ORDER BY o.amount DESC LIMIT 100; 执行结果....