image.png
    id : select子句或表执行顺序,id相同,从上到下执行,id不同,id值越大,执行优先级越高。
    select_type:select子句中的类型。

    • simple:简单的SELECT查询,不包含子查询和union。
    • primary:子查询中最外层查询,查询中若包含任何复杂的子部分,最外层的SELECT被标记为primary。
    • union:位于union中第二个极其以后的子查询中别标记为union,第一个就被标记为primary,如果是union位于from中则标记为derived
    • dependent union:满足union的的条件,及union中第二个以及后面的SELECT语句,同时该语句依赖外部的查询。
    • derived:该临时表是从子查询中派生出来的,位于form中的子查询。
    • depend subquery:子查询中的首歌SELECT(依赖外部的查询)。
    • subquery:子查询中的第一个SELECT。

    able:显示该查询访问的表名(或者别名)。也可能是以下的值:

    • :该行指的是id值为M和id值为N的并集。
    • :该行是指用于与该行的派生表结果id的值N。例如,派生表可以来自FROM子句中的子查询。
    • :N指向子查询,也就是explain结果中的下一列。

    possible_keys:显示可能应用在这张表中的索引,一个或者多个。查询设计到的字段若存在索引,在该索引被列出,但不一定被查询实际使用。
    key:实际被使用的索引列。
    key_len:表示索引中使用的字节数(最大可能长度,并非实际使用长度),如果key是NULL,则key_len是NULL。在不损失精度的情况下,长度越短越好。
    ref:关联的字段,常量等值查询,显示为const,如果为连接查询,显示关联的字段。
    rows:估算找到所查数据需要读取数据的行数。
    Extra:额外信息,使用优先级Using index>Using filesort(九死一生)>Using temporary(十死无生)。
    type:访问类型,一般要到rang级别

    • all (全表扫描),
    • index (全索引扫描,index与all区别为inex类型只遍历索引树。),
    • rang (索引范围扫描,仅检索给定范围内的行。输出行中的键列指示使用哪个索引。 key_len包含使用的最长的键部分。对于这种类型,ref列为空。使用=,<>,>,> =,<,<=,IS NULL,<=>,BETWEEN,LIKE或IN()运算符将键列与常量进行比较时,可以使用range。),
    • ref (join语句中被驱动表索引引用查询),
    • eq_ref(通过主键或唯一索引访问,最多只会有一条结果),
    • const (读常量,只需读一次),
    • system(系统表。表中只有一条数据),
    • null(速度最快)。
    • 性能从差到好。