mysql学习笔记之explain
测试mysql的版本5.7.24,不同的mysql版本查询的方式是不一样的。同一条sql在 5.7.24中执行与5.7.25中执行用到的索引就不一样。
explain 说明,解释
explain各项参数说明
-
id 表示执行的顺序
id的值越大,越先执行。对应简单的sql,关联查询 id的值都是相同的 -
select_type 查询类型
SIMPLE 简单
DERIVED 有子查询的(派生)
PRIMARY 查询中若包含任何复杂的子查询,最外层查询则被标记为Primary,注意不是主键 -
table 查询的表名称(有别名就显示表的别名)
对哪一步操作的结果 -
type 查询的方式,这个很重要: 叫扫描的类型比较好
const,system 只有一行匹配的时候
eq_ref 比较好的,用户到了主键索引或者唯一索引
ref 与eq_ref不同的是使用到了索引的左前缀
range 使用到索引指定范围的查询
index 扫描索引树
all 全部扫描 -
possible_keys
用到的合适的索引,可能用到的索引 -
key
实际用的索引 -
key_len
决定使用索引的长度 -
ref
关联表使用那一字段筛选行 -
rows
执行查询可能扫描的行数,这是一个预估值 -
filtered
返回结果的行,占读到的行(rows)的百分比 -
extra
另外的,这个参数也很重要
···
Using index condition; Using where; Using MRR; Using temporary; Using filesort
···
不同的MySQL版本、不同的存储引擎甚至不同的数据量表现都可能不一样。