开发者学堂课程【MySQL 高级应用 - 索引和锁:explain 之热身 case】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/598/detail/8607
explain 之热身 case
一.释义
为了后续的索引优化和调优查错,先得打牢 explain 的基础。
mysq1> explain select d1.nane,( select id fron t3)d2
-> from ( select id , nane fron t1 uhere other _ colunn *')d1
-> union
->( select nane , id fron t2);
Iid Iselect _ type Itable I type Ipossible _ keys Ikey Ikey _ len Iref Irows IExtra
IPRIMARY Isysten IHULL HULL IHULL I HULL I
I DERIUED ALL I HULL HULL I HULL I HULLI Using vhere
I sUBQUERY t3 I index I HULL PRIMARY I4 I HULL I 1 IUsing indexI
I UHION I ALL HULL
니 HULL IHULL IHULLI
I HULL IUNION RESULT I nion1,4> IALL HULL HULL I HULL IHULL INULL
5 rows in set (0.01 sec )
第一行(执行顺序4):
id 列为1,表示是 union 里的第一个 select , select type 列的 primary 表示该查询为外层查询, table 列被标记为,表示查询结果来自一个衍生表,其中derived3中3代表该查询衍生自第三个 select 查询,即 id 为3的 select 。
【 select d1.name.…….
第二行(执行顺序2):
id 为3,是整个查询中第三个select 的一部分。因查询包含在 from 中,所以为 derived .
【 select id , name from t1 where other _ column ="】
第三行(执行顺序3):
select 列表中的子查询 select_type 为 subquery ,为整个查询中的第二个 select 。
【 select id from t3】
第四行(执行顺序1):
select _ type 为 union ,说明第四个 select 是 union 里的第二个 select ,最先执行【 select name , id from t2】
第五行(执行顺序5):
代表从 union 的临时表中读取行的阶段, table 列的表示用第一个和第四个 select 的结果进行 union 操作。【两个结果 union 操作】