【MySQL】explain命令详解(一)

先来看看explain命令的表头
表头
表头

1、id

查询的序列号,包含一组数字,表示了一个查询过程中select子句或操作表的顺序。
有三种情况:
(1)id相同,表示顺序执行,自上而下。

执行顺序:t1、t3、t2。
(2)id不同且是子查询,则id值越大,表示其优先级越高,越先被执行。

执行顺序:t3、t1、t2。
(3)id既有相同,也有不同。id值越大,优先级越高,优先执行;id值相同,优先级相同,自上而下执行。

执行顺序:t3、derived2、t1
注:derived2表示id为2的衍生表,也就是t3的衍生表,显然子查询是针对t3表的。

2、select_type

  1. SIMPLE:不包含子查询和联合查询的简单查询。
  2. PRIMARY:如果一个查询中包含有子查询,其最外层查询是PRIMARY。如1(2)中对t1和t3的子查询都是SUBQUERY,对t2的查询(最外层)是PRIMARY。
  3. SUBQUERY:是一个子查询,可以出现在select或where子句中。
  4. DERIVED:在from子句中出现的子查询,会生成一个衍生表,存放查询结果,用于外层的查询。
  5. UNION:出现在union之后的查询。如果出现在from子句之后的子查询中,则外层的查询会被标记为DERIVED。
  6. UNION RESULT:结果是从UNION的表中获得的查询。

小例子:全外连接的explain
P.S. 7种join语句写法可参考另一篇文章【MySQL】记录7种SQL join语句

3、table

表名:表示当前查询是针对数据库中哪个表进行的。

原创文章 10 获赞 10 访问量 4758

猜你喜欢

转载自blog.csdn.net/Steven_L_/article/details/105844453