原文地址: 【MySQL 文档翻译】理解查询计划
欢迎访问我的博客: http://blog.duhbb.com/
官方文档
MySQL 官方文档地址: 8.8 Understanding the Query Execution Plan
引言
MySQL 优化器会根据 SQL 语句中的表, 列, 索引和 WHERE 子句中的条件的详细信息, 使用许多技术来有效地执行 SQL 查询. 可以在不读取所有行的情况下对一个巨大的表执行查询; 可以在不比较每个行组合的情况下执行涉及多个表的连接. 优化器选择执行最有效查询的一组操作称为 查询执行计划
(query execution plan), 也称为 EXPLAIN plan
. 你的目标是认识到 EXPLAIN 计划表明查询已优化好, 如果发现一些低效的操作, 可以通过学习 SQL 语法和索引技术来改进查询计划.
使用 EXPLAIN 优化查询
EXPLAIN 语句提供有关 MySQL 如何执行目标语句的信息:
- EXPLAIN 可以与 SELECT, DELETE, INSERT, REPLACE 和 UPDATE 语句一起使用.
- 当 EXPLAIN 与可解释语句 (explainable statement) 一起使用时, MySQL 会显示来自优化器的有关语句执行计划的信息. 也就是说, MySQL 解释了它将如何处理该语句, 包括有关表
如何连接
以及以何种顺序
连接的信息. 有关使用 EXPLAIN 获取执行计划信息的信息, 请参阅第 8.8.2 节 EXPLAIN 输出格式. - 当 EXPLAIN 与
FOR CONNECTION connection_id
而不是可解释的语句一起使用时, 它显示在命名连接中执行的语句的执行计划. 请参阅第 8.8.4 节 获取命名连接的执行计划信息. - 对于 SELECT 语句, 使用
SHOW WARNINGS
可是使 EXPLAIN 生成并显示的附加执行计划信息. 请参阅第 8.8.3 节 扩展 EXPLAIN 输出格式. - EXPLAIN 对于检查涉及分区表的查询很有用. 请参阅第 24.3.5 节 获取有关分区的信息.
FORMAT
选项可用于选择输出格式.TRADITIONAL
以表格格式显示输出. 如果没有 FORMAT 选项, 这是默认设置. 当 FORMAT 的选项值为JSON
可以显示 JSON 格式的信息.