(1)explain之select_type和table介绍
简单的查询类型是:simple
外层 primary,括号里subquery
用到了临时表:derived
(2)explain之select_type介绍
trpe反映的结果与我们sql是否优化过,是否是最佳状态息息相关
最简单的查询啥都没有改type就是all:表明的的检索是全表扫描
const:通过id查询,有索引查询很快 t1查询完之后作为一张临时表d1中只有一条记录,所以在查询就到了system级别
eq_ref:比如员工表和部门表,员工表的的CEO属于的部门(总裁办)在员工表只出现一次,所以就是eq_ref
但是从部分表搜索总裁办这个唯一的部门需要全表扫描是All
ref:通过非唯一性索引,可以返回很多行,比如下面通过col1(名字查询),可能返回很多行,所以type就是ref
range:使用了范围查询,type就是range
index:安索引查询
all:将全表查询一遍 效率最慢 type为all ,存在全表扫描,建议优化sql
(3)explain之possible_keys和key的介绍
他们两个决定了你是否使用大了索引,也用来判断索引是否失效,和在多个索引竞争的时候mysql最后到底用到了那个索引。
比如:t1表 可能有2个索引l理论上可能用到,但是最终用到的key索引是idx_t1
理论上possible_keys没有用到,实际key也没有用到
这里查询显示理论上没有用到索引,但是实际上用到了索引
(4)explain之key_len介绍
查询的使用使用的索引条件越多key_len越大