1 id 查询id
1.1 查询优化器可能对设计子查询的语句进行重写,从而转换为连接查询 (注:若id相同,则将子查询转换了连接查询。)
1.2 union会生成一个id为null的查询,并生成一个临时表去重。union all 不会生成临时表。
2 select_type 查询类型
...
3 partitions 分区
...
4 type
4.1 system: 当表中只有一条记录 并且该表使用的存储引擎的统计数据是精确的。
4.2 const: 就是当我们根据主键或者唯一二级索引列与常数进行等值匹配 。
4.3 eq_ref: 在连接查询 时,如果被驱动表是通过主键或者唯一二级索引列等值匹配 的方式进行访问的(如果该主键或者唯一二级索引是联合索引的话,所有的索引列都必须进行等值比较)。
4.4 ref: 当通过普通的二级索引 列与常量进行等值匹配 时来查询某个表。
4.5 full_text: ...
4.6 ref_or_null: 当对普通二级索引 进行等值匹配查询,该索引列的值也可以是 NULL 值时。
4.7 index_merge: 索引合并。一般查询一个一个表只用到一个索引,但是可能通过多个索引合并的方式。
4.8 unique_subquery: 类似于两表连接中被驱动表的 eq_ref 访问方法, unique_subquery 是针对在一些包含 IN 子查询 的查询语句中,如果查询优化器决定将 IN 子查询转换为 EXISTS 子查询,而且子查询可以使 用到主键 进行等值匹配
4.9 index_subquery: 类似unique_subquery,只不过使用的时普通索引匹配。
4.10 range: 如果使用索引获取某些 范围区间 的记录,那么就可能使用到 range 访问方法。
4.11 index: 当我们可以使用索引覆盖,但需要扫描全部的索引记录时。
4.12 all: 全表扫描。
5 possible_keys和key
5.1 possible_keys : 表示在某个查询语句中,对某个表执行单表查询时可能用到的索引有哪些。
5.2 key: 表示实际用到的索引有哪些。
注:possible_keys列中的值并不是越多越好,可能使用的索引越多,查询优化器计算查询成本时就得花费更长时间,所以如果可以的话,尽量删除那些用不到的索引。
6 ref: 展示的就是与索引列作等值匹配的东西,比如只是一个常数或者是某个列
7 rows: 查询优化器决定使用全表扫描的方式对某个表执行查询时,执行计划的 rows 列就代表预计需要扫描的行数,如果使用索引来执行查询时,执行计划的 rows 列就代表预计扫描的索引记录行数
8 extra: 额外信息
8.1 Using index condition 用到了索引下推(省去很多回表操作的成本)
浙公网安备 33010602011771号