- system 这是const联接类型的一个特例,当查询的表只有一行时使用
- const:表示通过索引一次就找到了,const用于比较primary key 或者 unique索引。因为只需匹配一行数据,所有很快。如果将主键置于where列表中,mysql就能将该查询转换为一个const
- eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键 或 唯一索引扫描。
- ref:非唯一性索引扫描,返回匹配某个单独值的所有行。本质是也是一种索引访问,它返回所有匹配某个单独值的行,然而他可能会找到多个符合条件的行,所以它应该属于查找和扫描的混合体
- ref_or_null 类似于 ref类型的查询,但是附加了对 null 值列的查询
- range:只检索给定范围的行,使用一个索引来选择行。key列显示使用了那个索引。一般就是在where语句中出现了between、<、>、in等的查询。这种索引列上的范围扫描比全索引扫描要好。只需要开始于某个点,结束于另一个点,不用扫描全部索引
- index:Full Index Scan,index与ALL区别为index类型只遍历索引树。这通常为ALL块,应为索引文件通常比数据文件小。(Index与ALL虽然都是读全表,但index是从索引中读取,而ALL是从硬盘读取)
- ALL:Full Table Scan,遍历全表以找到匹配的行
- Distinct 优化distinct操作,在找到第一匹配的记录后即停止找同样的动作
- Not exists 使用 not exists 来优化查询
- Using filesort 使用额外操作进行排序,通常会出现在order by 或 group by 查询
- Using index 使用了覆盖索引进行查询
- Using temporary mysql需要使用临时表来处理查询,常见于排序,子查询,和分组查询
- Using where 需要在mysql服务器层使用 where条件来过滤数据
- select tables /optimized away 直接通过索引来获得数据,不用访问表