Mysql多个LEFT JOIN使用ORDER BY不能使用索引导致查询过慢的解决方案
2017-10-19 09:58
459 查看
Mysql在多个LEFT JOIN的情况下使用ORDER BY排序,就算是其中一个表的主键也仍然使用file sort排序,数据量多的话就相当的慢。
优化前语句
SELECT * FROM a LEFT JOIN b ON a.id=b.a_id ORDER a.id DESC
优化后语句
SELECT * FROM a LEFT JOIN b ON a.id=b.a_id JOIN (SELECT id FROM a ORDER BY id DESC) a_order ON a.id = a_order.id
实际工作中100W+的几个表使用LEFT JOIN要20分钟才能得到结果,语句优化后3秒。
原文链接
优化前语句
SELECT * FROM a LEFT JOIN b ON a.id=b.a_id ORDER a.id DESC
优化后语句
SELECT * FROM a LEFT JOIN b ON a.id=b.a_id JOIN (SELECT id FROM a ORDER BY id DESC) a_order ON a.id = a_order.id
实际工作中100W+的几个表使用LEFT JOIN要20分钟才能得到结果,语句优化后3秒。
原文链接
相关文章推荐
- Mysql多个LEFT JOIN使用ORDER不能使用索引导致查询过慢的解决方案
- Mysql多个LEFT JOIN使用ORDER不能使用索引导致查询过慢的解决方案
- Mysql多个LEFT JOIN使用ORDER不能使用索引解决方案
- Mysql多个LEFT JOIN使用ORDER不能使用索引解决方案
- 错误使用MySQL前缀索引导致的慢查询
- 使用索引的误区之二:使用了 和 != 操作符,导致查询不使用索引
- MySQL查询优化技术系列讲座之使用索引(一)
- 使用tomcat的时候,网页地址出现中文,出现不认识编码导致查询无法完成解决方案
- MySQL查询优化技术系列讲座之使用索引
- java中使用mysql查询 条件中含有中文时查询不到结果解决方案
- MYSQL查询优化:使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- Tornado2.2帮助 索引不能使用的解决方案
- MySQL查询优化技术系列讲座之使用索引
- MySQL查询优化技术之使用索引
- MySQL查询优化技术系列讲座之使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- 在MySQL查询中忽略或强制使用某索引
- MySQL查询优化技术系列讲座之使用索引【转】
- 合理使用MySQL索引建立高质量查询语句