Explain工具

id列

id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按照select出现的顺序增长的,id列越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行

select_type

表示对应行是简单还是复杂的查询。

simple: 简单查询,查询不包含子查询和union ;

primary: 复杂查询中最外层的select ;

subquery: 包含在select中的子查询(不在from子句中);

derived: 包含在from子句中的子查询.MySQL会将结果存放在一个临时表中,也称为派生表 ;

union: 在union中的第二个和随和的select;

table

这一列表示explain的一行正在访问哪个表,当from子句中有子查询时格式,标识当前查询依赖id=N的查询,于是限制性id=N的查询.当有union时,union result的table列的值为<union1,2>,1和2表示参与union的select行id

type

这一列标识关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概范围.依次从最好到最差分别为: system > const > eq_ref > ref > range > index > all

一般来说,得保证达到range级别,最好达到ref。Null: MySQL能在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。例如: 在索引中选取最小值,可以单独查找索引来完成,不需要在执行时访问表。

const,system: MySQL能对查询的某部分进行优化并且将其转化为一个常量。用于primary key 或者 unique key 的所有列与常数比较时,所以表最多一个匹配行,读取一次,速度比较快。

system是const的特例,表里只有一条元组匹配时为system。

eq_ref: primary key 或 unique key索引的所有部分被连接使用,最多只会返回一条符合条件的记录。这可能是在const之外最好的连接类型了,简单的select查询不会出现这个type。

ref: 相比eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,索引要和某个值相比较,可能会找到多个符合条件的行。

range: 范围扫描通常出现在in(),between,>=<等操作中,使用一个索引给定范围的行。

index: 扫描全索引就能拿到结果,一般是扫描某个二级索引,这种扫描不会从索引树根节点开始快速查找,而是对二级索引的叶子节点遍历和扫描,速度还是比较慢的,这种查询一般为使用覆盖索引,二级索引一般比较小,所以通常比All快一些。

possible_keys

这一列显示查询可能使用哪些索引来查找。

explain时可能出现possible_keys有列,而key显示NULL的情况,这种情况是因为表中数据不多,MySQL认为索引对此查询帮助不大,选择了全表查询。

如果该列是NULL,则没有相关的索引,在这种情况下,可以通过检查where子句看是否可以创造一个适当的索引来提高查询性能,然后用explain查看效果。

key

这一列显示MySQL实际采用哪个索引来优化该表的访问。如果没有使用索引,则该列是NULL,如果想强制MySQL使用或护士possible_keys列中的索引,在查询中使用force,ndex,ignore index.

ken_len

这一列显示了MySQL在索引里使用的字节数,通过这个值可以算出具体使用了索引的哪些列。

ref

这一列显示了再key列记录的索引中,表查找值所用到的列和常量,常见的有: const,字段名

rows

这一列是MySQL估计尧都区并检测的行数,注意这个不是结果集里的行数

Extra

这一列展示的是额外信息

索引总结

https://img-blog.csdnimg.cn/20210512030007694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODA0Nzc1,size_16,color_FFFFFF,t_70

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫吹过的柚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值