先来看看explain命令的表头
查询的序列號包含一组数字,表示了一个查询过程中select子句或操作表的顺序
有三种情况: (1)id相同,表示顺序执行自上而下。
执行顺序:t1、t3、t2 (2)id不同且是子查询,则id值越大表示其优先级越高,越先被执行
执行顺序:t3、t1、t2。 (3)id既有相同也有不同。id值越大优先级越高,優先执行;id值相同优先级相同,自上而下执行
执行顺序:t3、derived2、t1 注:derived2表示id为2的衍生表,也就是t3的衍生表显然子查询是针对t3表的。
- SIMPLE:不包含子查询和联合查询的简单查询
- PRIMARY:如果一个查询中包含有子查询,其最外层查询是PRIMARY如1(2)中对t1和t3的子查询都是SUBQUERY,对t2的查询(最外层)是PRIMARY
- DERIVED:在from子句中出现的子查询,会生成一个衍生表存放查询结果,用于外层的查询
- UNION:出现在union之后的查询。如果出现在from子句之后的子查询中则外层的查询会被标记为DERIVED。
小例子:全外连接的explain
P.S. 7种join语句写法可参考另一篇文章
表名:表示当前查询是针对数据库中哪个表进行的