Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Optimizing Queries with EXPLAIN

10.8.1 使用 EXPLAIN 优化查询

EXPLAIN 语句提供了 MySQL 执行语句的信息:

使用 EXPLAIN,您可以看到哪里应该添加索引以使语句执行速度更快,使用索引来查找行。您也可以使用 EXPLAIN 来检查优化器是否以最佳顺序连接表。要提示优化器使用与 SELECT 语句中表的顺序相对应的连接顺序,请在语句开头使用 SELECT STRAIGHT_JOIN 而不是简单的 SELECT。(请参阅 第 15.2.13 节,“SELECT 语句”。)然而,STRAIGHT_JOIN 可能会阻止索引的使用,因为它禁用了半连接变换。请参阅 优化 IN 和 EXISTS 子查询谓词的半连接变换

优化器跟踪有时可能提供与 EXPLAIN 相补充的信息。但是,优化器跟踪的格式和内容可能会在版本之间更改。有关详细信息,请参阅 MySQL Internals: 优化器跟踪

如果您遇到索引未被使用的问题,而您认为它们应该被使用,请运行 ANALYZE TABLE 以更新表统计信息,如键的基数,这些信息可能会影响优化器的选择。请参阅 第 15.7.3.1 节,“ANALYZE TABLE 语句”

Note

EXPLAIN 也可以用于获取表中的列信息。EXPLAIN tbl_name 等同于 DESCRIBE tbl_nameSHOW COLUMNS FROM tbl_name。有关更多信息,请参阅 第 15.8.1 节,“DESCRIBE 语句”第 15.7.7.6 节,“SHOW COLUMNS 语句”