使用explain可以查询sql语句是否使用索引,以及sql语句的查询顺序
-
id
sql语句的查询顺序,id相同,执行顺序从上到下;
sql语句有子查询时,id不同,id越大执行优先级越高。 -
select_type
SIMPLE: 简单的查询语句,没有子查询和UNION
PRIMARY: 复杂的sql语句,最外层查询被标记为PRIMARY
SUBQUERY 包含子查询
UNION 包含UNION的语句 -
table
sql语句执行的表 -
partitions
-
type
显示查询使用的类型,效率从高到低:
system > const > eq_ref > ref > range > index > all
system: 只有一行记录,是const类型的特列,平时不会出现,这个也可以忽略不计
const: 通过索引一次就找到了,一般查询条件为主键索引或唯一索引
eq_ref:
ref: 非唯一索引
range: 查询给定范围的行
index:
all: 遍历全表找到匹配行 -
possible_keys
查询条件中出现的索引 -
key
实际使用的索引 -
key_len
索引使用的字节数 -
ref
非唯一索引 -
rows
查询结果的行数 -
filtered
-
extra
额外信息
Using index: 覆盖索引,避免访问表的数据行
Using where: 使用了where过滤
Using index condition; Using temporary: