标签:mysql
有MySQL使用经验的同学在实际项目中可能会遇到SQL慢查询的场景,有些场景很容易定位问题所在(如单表操作有慢查询SQL时,仔细check SQL语句通常很容易定位索引问题),而有些复杂业务场景下(如多表联合查询几十个字段并做group或sort等操作),人工check SQL语句通常很难发现SQL瓶颈根源。这个时候,MySQL提供的explain命令就派上用场了。
本笔记主要对explain的输出结果做说明,并给出根据explain输出对SQL做优化的思路。
1. EXPLAIN语法及用途本文下面的内容会说明如何通过explain输出来确定多表join时optimizer对各表的执行次序,以及如何调整SQL来影响optimizer的执行计划。
2. EXPLAIN输出格式说明除explain外,MySQL还支持explain extended命令来分析optimizer的执行计划,后者在输出结果中多1个filtered字段,且可以用show warnings语句来分析输出的extra信息。
3. 如何根据explain的输出优化SQL【参考资料】
1. MySQL Doc:
EXPLAIN Syntax
2. MySQL Doc: EXPLAIN Output Format
3. MySQL Doc:
SELECT Syntax about STRAIGHT_JOIN
4. MySQL Doc:
Optimizing Queries with EXPLAIN
5. MySQL Doc:
Nested-Loop Join Algorithms
6. PDF Presentation from Oreilly.com:
Explain Demystified
7. slideshare:
Mysql Explain Explained
8.
MySQL索引原理及慢查询优化
【MySQL笔记】SQL优化利器 - explain命令的输出格式详解
标签:mysql
原文地址:http://blog.csdn.net/slvher/article/details/43820829