explain各字段说明
id选择标识符(查询的顺序号)
select_type:查询的类型
table:输出结果集的表
partitions:匹配的分区
type:访问类型(性能:ALL < index < range < ref < eq_ref < const < system < NULL)
possible_keys:可能使用的索引
key:实际使用的索引
key_len:索引中使用的字节数
ref:索引的哪一列被使用了
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的其他重要说明
其中type访问类型说明
ALL
全表扫描。(例外:查询里使用了limit,或者在Extra列中显示"Using distinct/not exist")
index
按索引次序全表扫描。(避免了排序但要承担按索引次序读取整个表的开销。如果在Extra列中显示"Using index",说明使用了覆盖索引,它只扫描索引的数据而不是按索引次序的每一行,开销比按索引次序全表扫描小。)
range
使用索引检索给定范围的行。(通常出现在between、>等)
ref
索引查找。(通常出现在使用非唯一索引或者唯一索引的非唯一性前缀)
qe_ref
索引查找唯一值。(通常出现在使用主键或唯一索引)
const、system
转换为常量访问。(例如:通过将某一行的主键放入where子句的方式来选取此行的主键)
NULL
不用访问表或索引。(例如:从一个索引列里选取最小值可以通过单独查找索引来完成,不需执行时访问表)