Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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可能会阻止索引的使用,因为它会禁用半连接变换。见Optimizing IN and EXISTS Subquery Predicates with Semijoin Transformations

优化器跟踪可能会提供与EXPLAIN相同的信息。然而,优化器跟踪格式和内容可能会在不同版本之间发生变化。详见MySQL Internals: Tracing the Optimizer

如果您遇到索引不被使用的问题,而您认为它们应该被使用,请运行ANALYZE TABLE以更新表的统计信息,如键的卡度性,可以影响优化器的选择。见第15.7.3.1节,“ANALYZE TABLE 语句”

Note

EXPLAIN也可以用来获取表中的列信息。EXPLAIN tbl_nameDESCRIBE tbl_nameSHOW COLUMNS FROM tbl_name相同。更多信息见第15.8.1节,“DESCRIBE 语句”,和第15.7.7.6节,“SHOW COLUMNS 语句”