DEPENDENT SUBQUERY:子查询中首个SELECT,但依赖于外层的表(如果有多个子查询存在) 重点解释 子查询的查询方式依赖于外面的查询结果.用这个例子就是,先进行子查询外部的查询,得到一个结果集,.然后这个结果的每一行在跟select子查询的结果集进行匹配,也就是说,外部结果集的每一行都要关联内部结果集一次 (5)DERIVED/MATERIALI
subquery:在select 或 where列表中包含了子查询,该子查询被标记为subquery derived:在from列表中包含的子查询被标记为derived(衍生)。若union包含在 from子句的子查询中,外层select将被标记为derived union:若第二个select出现在union之后,则被标记为union union result:从union表获取结果的select被标记为union result ...
select_type表示对应行是简单还是复杂查询,如果是复杂的查询,又是上述三种复杂查询中的那一种。 simple:简单查询,查询不包含子查询和union。 primary:复杂查询中最外层的select。 subquery:包含在select中的子查询(不在from子句中)。 derived:包含在from子句中的子查询,MySQL会将结果存放在一个临时表中,也称为派生表...
UNION RESULT: MySQL 选择使用临时表来完成 UNION 查询的去重,针对该临时表的查询的 select_type 是 UNION RESULT DEPENDENT UNION: UNION 查询相关的类型 SUBQUERY, DEPENDENT SUBQUERY, MATERIALIZED: 子查询相关的类型 DERIVED: 在包含派生表的查询中,以物化派生表的方式执行的查询 1.2 type const: 通过主键或唯一...
(5)DERIVED/MATERIALIZED DERIVED:被驱动的SELECT子查询(子查询位于FROM子句) 例子 select aa from (select * from a) b; MATERIALIZED:被物化的子查询 (6)UNCACHEABLE SUBQUERY/UNCACHEABLE UNION UNCACHEABLE SUBQUERY:对于外层的主表,子查询不可被物化,每次都需要计算(耗时操作) ...
explain select 1 union all select 2 fromdual; MySQL5.7及以后同样做了优化 【table列】 table列的结果表明当前行对应的select正在访问哪个表。当查询的<from>子句中有子查询时,table列是 <derivedN> 格式,表示当前的select依赖 id=N结果行对应的查询,要先执行 id序号=N 的查询。当存在 union 时,UNION RESUL...
select_type列出现DERIVED 类型, 说明派生表没有合并,派生表会物化为临时表,但此时外查询块中的条件推入到了派生表中,相当于执行语句select * from (select id,c1 from t1 where id=2) dt,对过滤后的数据进行物化,先过滤再物化,访问的数据量小,物化结果集小。
select_type列出现DERIVED 类型, 说明派生表没有合并,派生表会物化为临时表,但此时外查询块中的条件推入到了派生表中,相当于执行语句select * from (select id,c1 from t1 where id=2) dt,对过滤后的数据进行物化,先过滤再物化,访问的数据量小,物化结果集小。
derived :from字句中出现的子查询,也叫做派生表,其他数据库中可能叫做内联视图或嵌套select table列 这一列显示了对应行正在访问查询的表名,如果查询使用了别名,那么这里显示的是别名,如果不涉及对数据表的操作,那么这显示为null,如果显示为尖括号括起来的<derived N>就表示这个是临时表,后边的N就是执行计划中的id...