该EXPLAIN
语句提供了有关 MySQL 如何执行语句的信息:
当
EXPLAIN
与可解释的语句一起使用时,MySQL 会显示来自优化器的有关语句执行计划的信息。也就是说,MySQL 解释了它将如何处理该语句,包括有关表如何连接以及连接顺序的信息。有关使用EXPLAIN
获取执行计划信息的信息,请参阅第 8.8.2 节,“EXPLAIN 输出格式”。当
EXPLAIN
与 而不是可解释的语句一起使用时,它显示在命名连接中执行的语句的执行计划。请参阅第 8.8.4 节,“获取命名连接的执行计划信息”。FOR CONNECTION
connection_id
对于
SELECT
语句,EXPLAIN
生成可以使用显示的附加执行计划信息SHOW WARNINGS
。请参阅 第 8.8.3 节,“扩展 EXPLAIN 输出格式”。EXPLAIN
对于检查涉及分区表的查询很有用。请参阅 第 24.3.5 节,“获取有关分区的信息”。该
FORMAT
选项可用于选择输出格式。TRADITIONAL
以表格格式显示输出。如果没有FORMAT
选项,这是默认值。JSON
format 以 JSON 格式显示信息。
在 的帮助下EXPLAIN
,您可以看到应该在何处向表添加索引,以便通过使用索引查找行来更快地执行语句。您还可以使用它
EXPLAIN
来检查优化器是否以最佳顺序连接表。要提示优化器使用与表在语句中的命名顺序相对应的连接顺序,请
以而不是仅以.SELECT
开始语句。(请参阅
第 13.2.10 节,“SELECT 语句”。)但是,
可能会阻止使用索引,因为它禁用了半连接转换。看
SELECT STRAIGHT_JOIN
SELECT
STRAIGHT_JOIN
第 8.2.2.1 节,“使用半连接转换优化 IN 和 EXISTS 子查询谓词”。
优化器跟踪有时可能会提供与EXPLAIN
. 但是,优化器跟踪格式和内容可能会因版本而异。有关详细信息,请参阅
MySQL 内部结构:跟踪优化器。
如果您遇到索引在您认为应该使用时未被使用的问题,请运行ANALYZE
TABLE
以更新表统计信息,例如键的基数,这可能会影响优化器所做的选择。请参阅
第 13.7.3.1 节,“ANALYZE TABLE 语句”。
EXPLAIN
也可用于获取有关表中列的信息。
是和
的同义词。有关详细信息,请参阅第 13.8.1 节,“DESCRIBE 语句”和
第 13.7.7.5 节,“SHOW COLUMNS 语句”。
EXPLAIN
tbl_name
DESCRIBE
tbl_name
SHOW COLUMNS FROM
tbl_name