MySQL高级中explain之type的介绍

type类型

从最好到最差依次是:

system > const > eq_ref > ref > range > index > all

对以上分类的详细介绍表格如下:

type类型 详细介绍
system 表只有一行记录(等于系统表),这是const类型的特例,平时不不会出现,这个可以忽略不计
const 表示通过索引一次就找到了,const用于比较primary key或者 unique索引。因为只匹配一行数据,所以很快,如将主键置于where列表中,MySQL就能将该查询转为一个常量
eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常见于主键或唯一索引扫描
ref 非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而它可能会找到多个符合条件的行,所以它应该属于查找和扫描的混合体
range 只检索给定范围的行,使用一个索引来选择行,key列显示使用了哪个索引,一般就是在你的where语句种出现了between、<、>、in等的查询,这种范围扫描索引比全表扫描要好,因为只需要开始与索引的某一点,而结束与另一点,不用扫描全部索引
index Full Index Scan,index与ALL区别为index类型只遍历索引树,这通常比ALL快,因为索引文件通常比数据文件小,(也就是说虽然all和index都是读全表,但index是从索引中读取的,而all是从硬盘中读的,后者与磁盘I/0的交互次数较多)  
all Full Table Scan, 将遍历全表以找到匹配的行

备注:一般来说,得保证查询至少达到range级别,最好能达到ref

posted @ 2021-06-28 18:08  没有你哪有我  阅读(271)  评论(0编辑  收藏  举报