mysql explain

扫码查看

explain:

  SIMPLE

    简单的SELECT语句(不包括UNION操作或子查询操作)  

  

  PRIMARY/UNION

    PRIMARY:查询中最外层的SELECT(如两表做UNION或者存在子查询的外层的表操作为PRIMARY,内层的操作为UNION)

    UNION:UNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句没有依赖关系)

  

  

  DEPENDENT UNION/UNIOIN RESULT

    DEPENDENT UNION:UNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句有依赖关系)

    UNION RESULT:UNION操作的结果,id值通常为NULL

    例子

    select * from people where zipcode=10000 union select * from people where zipcode=1000

  



  SUBQUERY/DEPENDENT SUBQUERY

    SUBQUERY:子查询中首个SELECT(如果有多个子查询存在):

  

  DEPENDENT SUBQUERY:子查询中首个SELECT,但依赖于外层的表(如果有多个子查询存在)

    重点解释 子查询的查询方式依赖于外面的查询结果.用这个例子就是,先进行子查询外部的查询,得到一个结果集,.然后这个结果的每一行在跟select子查询的结果集进行匹配,也就是说,外部结果集的每一行都要关联内部结果集一次

  

  DERIVED/MATERIALIZED

    DERIVED:被驱动的SELECT子查询(子查询位于FROM子句)

    例子 

    select aa from (select * from a) b;

  

  MATERIALIZED:被物化的子查询

  UNCACHEABLE SUBQUERY/UNCACHEABLE UNION

    UNCACHEABLE SUBQUERY:对于外层的主表,子查询不可被物化,每次都需要计算(耗时操作)

    UNCACHEABLE UNION:UNION操作中,内层的不可被物化的子查询(类似于UNCACHEABLE SUBQUERY)

 * 注意
   特别关注 DEPENDENT SUBQUERY ,会严重消耗性能

01-19 11:53
查看更多