mysql执行计划

通过EXPLAIN关键分析的结果由以下列组成,接下来挨个分析每一个列

1.1.1.1.        ID列

ID列:描述select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序

根据ID的数值结果可以分成一下三种情况

l  id相同:执行顺序由上至下

l  id不同:如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

l  id相同不同:同时存在

分别举例来看

 

1.1.1.1.1.      Id相同

 

 

如上图所示,ID列的值全为1,代表执行的允许从t1开始加载,依次为t3与t2

 

EXPLAIN
select t2.* from t1,t2,t3  where t1.id = t2.id and t1.id = t3.id
and t1.other_column = '';

1.1.1.1.1.      Id不同

 

如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

 

EXPLAIN
select t2.* from  t2 where id = (
select id from t1 where id =  (select t3.id from t3 where t3.other_column='')
);

1.1.1.1.1.      Id相同又不同

 

id如果相同,可以认为是一组,从上往下顺序执行;

在所有组中,id值越大,优先级越高,越先执行

 

EXPLAIN
select t2.* from (
 select t3.id
from t3 where t3.other_column = ''
) s1 ,t2 where s1.id = t2.id

 

 

select_type

Select_type:查询的类型,

要是用于区别:普通查询、联合查询、子查询等的复杂查询

 

类型如下

 

 simple

 

EXPLAIN select * from t1

简单的 select 查询,查询中不包含子查询或者UNION

 

posted @ 2019-06-16 22:16  发疯的man  阅读(415)  评论(0编辑  收藏  举报