12个返回参数,分5、4、3理解记忆
| 5个 查询相关 | 
 | ||||||||||
| 4个 索引相关 | 
 | ||||||||||
| 3个 其他 | 
 | 
11个select_type类型,7个常见
| SIMPLE | 简单的SELECT(不使用UNION或子查询) | 
| PRIMARY | 最外层的SELECT | 
| UNION | UNION中的第二个或随后的SELECT查询,不依赖于外部查询的结果集 | 
| UNION RESULT | 一个UNION的结果 | 
| DEPENDENT UNION | UNION中的第二个或随后的SELECT查询,依赖于外部查询的结果集 | 
| SUBQUERY | 子查询中的第一个SELECT查询,不依赖于外部查询的结果集 | 
| DEPENDENT SUBQUERY | 第一个SELECT子查询,依赖于外部查询的结果集 | 
| DERIVED | 派生表用于FROM子句里有子查询的情况。MySQL会递归执行这些子查询,把结果放在临时表里 | 
| MATERIALIZED | 子查询的结果被保存为虚拟临时表,而不是为每一行执行它 | 
| UNCACHEABLE SUBQUERY | 结果集无法缓存的子查询,必须重新为外层查询的每一行进行评估 | 
| UNCACHEABLE UNION | UNION中的第二个或更后面的SELECT查询属于不可缓存的子查询 | 
11种type类型,7个常见,优劣顺序自上而下
| system | 表中只有一条数据,并使用 MyISAM | |
| const | 通过主键或唯一索引的等值查询,并且只匹配一条数据。 | explain select * from table where id = 1 | 
| eq_ref | 多表连接查询,被驱动表使用主键或唯一索引等值查询 | explain select * from table1 t1 left join table2 t2 on t1.id = t2.id where t1.id = t2.id | 
| ref | 普通二级索引等值查询 | explain select * from table1 t1 left join table2 t2 on t1.name = t2.name where t1.name = t2.name | 
| range | 命中索引,并且区间查询 | explain select * from table where age > 1 | 
| index | 直接在索引树上匹配,并不需要回表 | explain select count(*) from table | 
| all | 全表扫描 | explain select * from table |