MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(二)

③. id字段


  • ①. id列的编号是select的序列号,有几个select就有几个id,下面将分析三种情况


  • ②. id相同,执行顺序由上到下


MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(二)


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


MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(二)


④. id相同又不同,注意:id为NULL最后执行


MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(二)


④. select_type、table字段


  • ①. select_type 表示对应行是简单还是复杂的查询。


  • ②. simple:简单查询。查询不包含子查询和union


mysql> explain select * from film where id = 2;


MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(二)


③. primary:复杂查询中最外层的select


④. subquery:包含在select中的子查询(不在from子句中)

(在select后面from前面的叫子查询,在from后面的叫衍生查询)


⑤. derived:包含在 from 子句中的子查询。MySQL会将结果存放在一个临时表中,也称为派生表(derived的英文含 义)


# 关闭mysql5.7新特性对衍生表的合并优化
mysql> set session optimizer_switch='derived_merge=off';
mysql> explain select (select 1 from actor where id = 1) from 
(select * from film where id = 1) der;
#还原默认配置
mysql> set session optimizer_switch='derived_merge=on'; 


MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(二)


  • ⑥. UNION:若第二个SELECT出现在UNION之后,则别标记为UNION


  • ⑦. UNION RESULT:从UNION表获取结果的SELECT


  • ⑧. table:显示这一行的数据是关于哪张表


上一篇:SQL 调优1


下一篇:RISC-V生态全景解析(十一):YoC组件介绍系列一: CSI组件