mysql执行计划

id 查询的序列号:
id越大 越先执行 子查询的id会更大

select_type 用来分辨查询的类型:
SIMPLE是最简单的
PRIMARY是有子查询的外面的,子查询是DEPENDENT SUBQUERY,外层的需要依赖内层的
UNION就是求全集,然后和上面的子查询差不多,union是sql语句中union后面的,id也会越大
DEPENDENT UNION就是外面的查询需要依赖于子查询,然后子查询里面的union的后面的语句就是DEPENDENT UNION
UNION RESULT得到一个结果 外部可以读取 这个是没有id的
SUBQUERY和DEPENDENT SUBQUERY ,如果子查询查出来是一个值就是SUBQUERY,等值的匹配,如果是n多个值就是DEPENDENT SUBQUERY
DERIVED衍生 子查询查出来的集合 虚拟表
UNCACHEABLE SUBQUERY表示该子查询的结果集将不会被缓存并且一定会被外部查询重新计算
UNCACHEABLE UNION 属于uncacheable subquery的第二个或者往后的union select

table
1.具体表名就是创建的物理表的表名或别名
2.derivedN 从衍生表N取数据
3.union,n和m出来的表

type显示的是访问类型:
all:全表扫描
index:索引扫描(主键才有索引,不是索引就成all了)
range:范围扫描(这里也有有主键,如果没有用主键,就也是all
index_subquery:利用索引来关联子查询
unique_subquery:该连接类型类似与index_subquery,使用的是唯一索引
index_merge:在查询过程中需要多个索引组合
ref_or_null:查某个的值和为空e.mgr is null or e.mgr=7369
ref:使用了非唯一性索引进行数据的查找
eq_ref :使用唯一性索引进行数据查找(用了主键索引、唯一且非空,就只有主键,其他都没设置索引,大概是这个意思)
const:表至多有一个匹配行,就是比如查empno = 7369
system:表只有一行记录(const类型的特例)
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

possible_keys:可能会用的索引
key:用到的索引
key_len:索引中使用的字节数(越短越好)
ref:显示索引的哪一列被使用(尽量用常量值)
rows:大致估算出找出所需记录需要读取的行数

你可能感兴趣的:(笔记)