有道云笔记

有道云笔记

Explain

explain中的列

接下来我们将展示 explain 中每个列的信息。

  1. id列

id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。

id列越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行。

  1. select_type列

select_type 表示对应行是简单还是复杂的查询。

1)simple:简单查询。查询不包含子查询和union

mysql> explain select * from film where id = 2;

2)primary:复杂查询中最外层的 select

3)subquery:包含在 select 中的子查询(不在 from 子句中)

4)derived:包含在 from 子句中的子查询。MySQL会将结果存放在一个临时表中,也称为派生表(derived的英文含义)

用这个例子来了解 primary、subquery 和 derived 类型

mysql> set session optimizer_switch='derived_merge=off';   #关闭mysql5.7新特性对衍生表的合并优化

mysql> explain select (select 1 from actor where id = 1) from (select * from film where id = 1) der;