MySQL 执行计划(Explain)

主要就看一下,type 是什么,走没走索引,走了哪个索引,extra 看看,有没有索引覆盖啊,索引合并啊,索引下推啊…
id:
记住,id 从大到小执行,id相同从上往下执行 就行了。
type这里,网上的各种错误的博客,对 type = all,type = index有很多错误的观点
type = all,全表扫描,说白了就是走的主键索引,把主键索引叶子节点上的所有数据页全部遍历一遍。
● type = index,说白了走的是二级索引,把二级索引叶子节点上的所有数据页全部遍历一遍,这个效率一般比 type = all 全表扫描好一点,因为二级索引树比主键索引树小;但是也有可能执行效率还不如全表扫描,因为type = index还要很多次的回表,更多的IO次数
对于执行计划,参数有:
● possible_keys 字段表示可能用到的索引;
● key 字段表示实际用的索引,如果这一项为 NULL,说明没有使用索引;
● key_len 表示索引的长度;
● rows 表示扫描的数据行数。这是预估的行数,不一定很准确。
type 表示数据扫描类型,我们需要重点看这个
type 字段就是描述了找到所需数据时使用的扫描方式是什么,常见扫描类型的执行效率从低到高的顺序为:
All(全表扫描);
index(全索引扫描);
range(索引范围扫描);
ref(非唯一索引扫描);
eq_ref(唯一索引扫描);
const(结果只有一条的主键或唯一索引扫描)
除了 type 列,我们还要关注 extra 列显示的结果:
这里说几个重要的参考指标:
Using filesort :当查询语句中包含 group by 操作,而且无法利用索引完成排序操作的时候, 这时不得不选择相应的排序算法进行,甚至可能会通过文件排序,效率是很低的,所以要避免这种问题的出现。
Using temporary:使了用临时表保存中间结果,MySQL 在对查询结果排序时使用临时表,常见于排序 order by 和分组查询 group by。效率低,要避免这种问题的出现。
Using index:所需数据只需在索引即可全部获得,不须要再到表中取数据,也就是使用了覆盖索引,避免了回表操作,效率不错。
Backward index scan:使用倒序索引扫描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一切随缘~~~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值