1、all: 全表扫描,遍历全表找到匹配的行
index:索引全扫描,遍历整个索引来查询匹配的行
range:索引范围扫描,常见于<,>,>=,between等操作符
ref: 使用非唯一索引扫描或唯一索引的前缀扫描,返回匹配某个单独值的记录行
eq_ref:类似ref,区别就是使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配。简单来说,就是多表连接中使用primary key或者unique index 作为关联条件
const/system:单表中最多有一个匹配行,查询起来非常迅速,所以这个匹配行中的其他列的值可以被优化器在当前查询中当做常量来处理,例如:根据主键或唯一索引进行查询
null: 不用访问或者索引,直接得到的结果
以上性能有差到好
2、索引
索引是在存储引擎层中实现的,而不是服务器层上实现的。所以每种索引在不同的存储引擎上不一定完全相同。
B-tree索引:最常见。
hash索引: 是memory的独有的,使用场景简单。
R-tree索引 (空间索引) 是MyISAM的一个特殊索引类型。
Full-text索引 (全文索引) 是MyISAM的一个特殊索引类型。
3、B-tree索引
B代表的是balance 平衡树
利用B-tree可以进行全关键字、关键字范围和关键字前缀查询