开发者社区> xaubllxwtvaqiu> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

FAQ系列 | 解读EXPLAIN执行计划中的key_len

简介: FAQ系列 | 解读EXPLAIN执行计划中的key_len
+关注继续查看

导读

EXPLAIN中的key_len一列表示什么意思,该如何解读?

EXPLAIN执行计划中有一列 key_len 用于表示本次查询中,所选择的索引长度有多少字节,通常我们可借此判断联合索引有多少列被选择了。

在这里 key_len 大小的计算规则是:

  • 一般地,key_len 等于索引列类型字节长度,例如int类型为4-bytes,bigint为8-bytes;
  • 如果是字符串类型,还需要同时考虑字符集因素,例如:CHAR(30) UTF8则key_len至少是90-bytes;
  • 若该列类型定义时允许NULL,其key_len还需要再加 1-bytes;
  • 若该列类型为变长类型,例如 VARCHAR(TEXT\BLOB不允许整列创建索引,如果创建部分索引,也被视为动态列类型),其key_len还需要再加 2-bytes;

综上,看下面几个例子:

列类型key_len备注
id intkey_len = 4+1 = 5允许NULL,加1-byte
id int not nullkey_len = 4不允许NULL
user char(30) utf8key_len = 30*3+1允许NULL
user varchar(30) not null utf8key_len = 30*3+2动态列类型,加2-bytes
user varchar(30) utf8key_len = 30*3+2+1动态列类型,加2-bytes;允许NULL,再加1-byte
detail text(10) utf8key_len = 30*3+2+1TEXT列截取部分,被视为动态列类型,加2-bytes;且允许NULL


备注,key_len 只指示了WHERE中用于条件过滤时被选中的索引列,是不包含 ORDER BY/GROUP BY 这部分被选中的索引列。

例如,有个联合索引 idx1(c1, c2, c3),3个列均是INT NOT NULL,那么下面的这个SQL执行计划中,key_len的值是8而不是12:

SELECT…WHERE c1=? AND c2=? ORDER BY c1;


关于MySQL的方方面面大家想了解什么,可以直接留言回复,我会从中选择一些热门话题进行分享。 同时希望大家多多转发,多一些阅读量是老叶继续努力分享的绝佳助力,谢谢大家 :)


 

            </div>

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
FAQ系列 | 解读EXPLAIN执行计划中的key_len
FAQ系列 | 解读EXPLAIN执行计划中的key_len
11 0
FAQ系列 | 解读EXPLAIN执行计划中的key_len
FAQ系列 | 解读EXPLAIN执行计划中的key_len
21 0
FAQ系列 | 解读EXPLAIN执行计划中的key_len
FAQ系列 | 解读EXPLAIN执行计划中的key_len
14 0
巨坑系列:Java Bean 转 Map 的那些坑
有些业务场景下需要将 Java Bean 转成 Map 再使用。本以为很简单场景,但是坑很多。
133 0
FAQ系列 | 解读EXPLAIN执行计划中的key_len
FAQ系列 | 解读EXPLAIN执行计划中的key_len
25 0
SAP PM 入门系列2 - IE03显示设备主数据
SAP PM 入门系列2 - IE03显示设备主数据
35 0
FAQ系列 | 解读EXPLAIN执行计划中的key_len
FAQ系列 | 解读EXPLAIN执行计划中的key_len
83 0
KubeCon 速递 | 云原生操作系统进化,详解阿里云ACK Pro、ASM、ACR EE、ACK@Edge等四款企业级容器新品
提前剧透,KubeCon 2020 峰会上阿里云要发布什么企业级‘大杀器’?
3040 0
koubei.marketing.campaign.activity.query(活动详情查询)java版
说明:       本帖是利用支付宝正式环境测试账号测试活动详情查询接口,请求中根据文档传入了必传参数,大家可以配置自己的环境,根据自己的需求严格按照文档要求添加相关的可选参数,此demo仅供参考 测试环境:Eclipse+JDK1.6及以上+Tomcat6.0及以上 营销活动创建完成后,可以通过营销活动ID来查询活动详情信息。
277 0
【AWS系列】镭速RaySync VS FTP (2)- AWS巴西圣保罗到阿里云深圳
使用镭速传输,上传提升27+倍,下载提升382+倍。
1589 0
7700
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载