explain 的结果中,每行共有这么几列:id、select_type、table、type、possible_keys、key、key_len、ref、rows、extra。一一来做分析。其中type表示了执行计划这步用到的搜索类型。type可以分为
type | define |
---|---|
all | Full Table Scan,全表扫描 |
index | Full Index Scan,与全表扫描的区别是指遍历索引树 |
range | 范围索引扫描,常见Between and、<、>、in |
ref | 非唯一性索引扫描,返回匹配某个单独值的所有行。常见非唯一索引或唯一索引的前缀进行查找 |
eq_ref | 唯一性索引扫描,常见于主键或者唯一索引 |
const、system | 当Mysql对查询某部分进行优化,可以转化成一个常量时,使用const。如将主键置于where列表,就能将查询转成一个常量。 system是const的一个特例,当查询的表只有一行的情况下,使用system |
Null | Mysql优化过程中分解语句,执行时甚至不用访问表或索引 |