MySQL查询优化器在基于成本和规则对一条查询语句进行优化后,会生成一个执行计划。这个执行计划展示下来执行查询的具体方式,比如多表连接的顺序是什么,查询什么方法来具体查询每个表等。而EXPLAIN语句可以让我们查看某个语句的具体执行计划。
| 列名 | 描述 |
|---|---|
| id | 在一个大的查询语句中,每个SELECT关键字都对应一个唯一的id |
| select_type | SELECT关键字对应的查询的类型 |
| table | 表名 |
| partitions | 匹配的区分信息 |
| type | 针对单表的访问方法 |
| possible_keys | 可能用到的索引 |
| keys | 实际用到的索引 |
| key_len | 实际使用的索引长度 |
| ref | 当使用索引列等值查询时,与索引列进行等值匹配的对象信息 |
| rows | 预估的需要读取的记录条数 |
| filtered | 针对预估的需要读取的急剧,经过搜索条件过滤后的剩余记录条数的百分比 |
| Extra | 一些额外的信息 |
在EXPLAIN单词和真正查询语句中间加上FORMAT=JSON,可以得到JSON格式的执行计划。
在使用EXPLAIN语句查看了某个查询的执行计划后,紧接着还可以使用SHOW WARNINGS语句产看这个查询的执行计划有关的扩展信息。
