MySQL索引key_len

在查看MYSQL执行计划的时候,有一列 key_len 表示索引中使用的字节数,我们可以用它来判断使用了几个索引,我们使用最常用的utf-8编码按如下几点可以进行判断:
1、字段类型 int为4个,date为3,datetime为4,char(n)为3n,varchar(n)为3n+2(更多字段类型自己测试下就知道了)
2、如果字段可为 null,则需要额外再加1

按如上方法计算:
char(1)可为空的情况下key_len=4,不可为空的情况下key_len=3
varchar(100)可为空的情况下key_len=302,不可为空的情况下key_len=302+1=303

再假设一个字段char(1) not null 和一个字段int not null 进行了组合索引,那么当你写的SQL的执行计划中的 key_len=3+4=7 时,则可以说明这2个字段在这个SQL查询中都使用了索引。

所以我们就可以根据执行计划中的 key_len 的长度来判断使用了几个索引了。

补充:
possible_keys:显示当前SQL可能应用到的索引,一个或多个。查询涉及到的字段上若存在索引,则该索引将会被列出,但不一定被当前查询实际使用。
key:实际使用的索引,若为null,则没有使用到索引。(可能因为 ①没建立索引;②建立了索引但没有使用上)。查询中若使用了覆盖索引,则该索引仅出现在key列表中。

(END)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

catoop

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

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

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

打赏作者

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

抵扣说明:

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

余额充值