mysql explain字段含义,Mysql explain中的关键字段(通俗易懂篇)

作者:可爱猪猪 - 帅锅一枚

作者的网名很阔爱,如果喜欢本文章一定要点 喜欢 或者 打赏,拜托~

作者一直在进步,需要你们的支持和鼓励,谢谢!

人生理想:在程序猿界混出点名堂!

请读者,认真读完这篇文章,一定可以解开你心中多年的谜团!

1.possible_keys

条件字段在索引中存在,则将该索引列出。

注意:如果用到了索引,也就是key不为空,但possible_keys为空,那么使用了覆盖索引。

所谓覆盖索引,就是查询的时候select 的列就是索引字段。

2.key

使用的索引

这里使用的索引,并不代表一定用上了索引,用没用索引,以及索引如何用的还要取决于type字段

3.key_len

索引字段的长度,跟查询的结果集无关。只是跟索引字段的定义的长度有关。

这里需要搞懂两个问题:

如何计算索引长度

我直接说结果免的去看网上那么多测试和长篇大论

一般数据库采用utf-8,

varchar类型的长度为3*len+2

char类型的长度为3len

int类型的长度4

bigint的长度是8

此外,如果是null,在以上的基础+1,

题外话:mysql建议字段设置为not null来节省空间,此外int(10)并不是说占10个字节或者10位的长度,而只是不满10位填0,仅展示用

举例:

utf-8下 a varchar(10) 长度为3(utf-8)10+2(varchar)+1(null) = 33

key_len的作用

主要看用的联合索引的长度,

对于联合索引来说,只能根据type和key来判断用没有用上索引,用的哪个索引,但是索引用的哪个字段并推理不出,所以根据key_len和最左原则来推断。

至于网上有些文章说它越小越好,不一定有道理。比如联合索引全部使用key_len就比较大,但性能就好。

4.type

表示是否用上索引,以及索引是如何使用的,此字段决定索引的性能。

先看结果,性能由低到高:

ALL

ALL:全表扫描

TYPE:扫描全表的顺序是按照索引顺序扫描的

RANGE:between或者“>”这种符号的时候会出现这个

REF:经作者多次验证发现,非唯一索引或者非主键,也就是你的查询条件有可能返回多条结果,则为REF

CONST:经作者多次验证发现,不管是联合唯一索引还是主键,也就是你的查询条件是唯一的,则为CONST

5.extra

以下两个比较重要:

using index:出现这个说明mysql使用了覆盖索引,避免访问了表的数据行,效率不错!通俗的说也就是查询的列不需要回表,在索引树上就能拿到结果

using where:这说明服务器在存储引擎收到行后将进行过滤。有些where中的条件会有属于索引的列,当它读取使用索引的时候,就会被过滤,所以会出现有些where语句并没有在extra列中出现using where这么一个说明。

微信公众号:可爱猪猪聊程序,每天连载更新,内容易懂、精彩不断。

4fc882abea97

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值