一、什么是 Explain
Explain 被称为执行计划,在语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,模拟 MySQL 优化器来执行 SQL 语句,执行查询时,会返回执行计划的信息,并不执行这条 SQL。(注意,如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中)。Explain 可以用来分析 SQL 语句和表结构的性能瓶颈。通过 explain 的结果,可以了解到如数据表的查询顺序、数据查询操作的操作类型、哪些索引可以被命中、哪些索引实际会命中、每个数据表有多少行记录被查询等信息。
二、Explain 命令扩展explain extended:在 explain 的基础上提供一些额外的查询信息,在 explian extended 执行以后,通过 show warnings 命令可以得到优化后的查询语句,可以看出优化器做了哪些工作,还可以通过某些数据估算表连接的行数。
explain partitions:用于分析使用了分区的表,会显示出可能用到的分区。
注意:Explain 结果是基于数据表中现有数据的;Explain 结果与 MySQL 版本有很大的关系,不同版本的优化器的优化策略不同。
三、Explain 使用