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 int key_len = 4+1 = 5 允许NULL,加1-byte
id int not null key_len = 4 不允许NULL
user char(30) utf8 key_len = 30*3+1 允许NULL
user varchar(30) not null utf8 key_len = 30*3+2 动态列类型,加2-bytes
user varchar(30) utf8 key_len = 30*3+2+1 动态列类型,加2-bytes;允许NULL,再加1-byte
detail text(10) utf8 key_len = 30*3+2+1 TEXT列截取部分,被视为动态列类型,加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的方方面面大家想了解什么,可以直接留言回复,我会从中选择一些热门话题进行分享。 同时希望大家多多转发,多一些阅读量是老叶继续努力分享的绝佳助力,谢谢大家 :)


最后打个广告,运维圈人士专属铁观音茶叶微店上线了,访问:http://yuhongli.com 获得专属优惠

相关文章
|
2月前
|
人工智能 机器人 Serverless
打造云端数字员工:OpenClaw 的 SAE 弹性托管实践
OpenClaw(原Clawdbot/Moltbot)GitHub星标破14万,标志AI从对话框迈向自主智能体。它以轻量CLI启动本地网关,提供安全、持久、可扩展的Agent运行时:通过插件化接入多平台、向量记忆支持长期决策、Docker沙箱+Headless Chromium保障安全执行。依托阿里云SAE全托管Serverless环境,零运维实现DinD、弹性扩缩与高可用,让AI真正成为可交付结果的“数字员工”。
|
4月前
|
存储 编解码 缓存
上传文件卡顿?阿里云点播上传加速技巧全解析
本文系统解析阿里云视频点播上传机制,针对进度停滞、超时失败等问题,分享选型策略、分片上传、并发优化等实战技巧,助力提升上传效率与稳定性。
|
7月前
|
算法 API 数据安全/隐私保护
电商 API 双平台实战:淘宝 item.get + 京东 item_detail 对接指南(附可复用代码 + 问题排查)
本文详细解析了淘宝和京东双平台API对接的核心流程,涵盖资质申请、凭证获取、签名生成、高频接口调用及常见问题解决方案,助力开发者高效实现商品数据同步与管理。
|
3月前
|
存储 弹性计算 缓存
阿里云4核云服务器价格详解:最新收费标准与4核8G、4核16G等配置活动价格参考
阿里云4核云服务器(vCPU)凭借多样化实例规格(如经济型e、通用算力型u2a、计算型c9i等),覆盖从个人到企业的全场景需求。价格方面,提供包年包月、按量付费等灵活计费模式,具体价格随配置(内存、带宽、存储)差异显著,如经济型e实例4核8G配置年付约1595.11元起,计算型c9i实例4核8G年付约3147.56元。活动期间可享u2a实例2.5折、九代云服务器年付6.4折起及新客专属补贴,适配个人博客、企业官网、在线教育、电商、大数据分析等场景。
|
5月前
|
人工智能 安全 Anolis
软硬协同!RISC-V 生态分论坛精彩议程公布 | 2025 龙蜥大会
以 “软硬协同” 为核心主线,围绕系统层适配优化、芯片 - 软件协同创新、开源生态标准化三大维度展开深度研讨。
|
5月前
|
人工智能
AI实训营11月重磅上新!电商卖家福音来咯:一键生成高颜值商品视频,还能赢好礼!
AI实训营11月重磅活动来袭!专为电商卖家打造,输入商品信息即可一键生成专业级短视频,支持服饰、数码、家居等多品类。零门槛、高效智能,基于阿里云百炼+Wan2.5模型,画质清晰、风格多样。参与即有机会赢取定制周边好礼及Tokens优惠包,提升创作效率,引爆流量增长!
282 0
|
消息中间件 缓存 架构师
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
Kafka 是一个高吞吐量、高性能的消息中间件,关于 Kafka 高性能背后的实现,是大厂面试高频问题。本篇全面详解 Kafka 高性能背后的实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
|
安全 网络协议 Linux
结合 `nc` 工具利用笑脸漏洞(Smile Bug)攻击 Metasploitable2 Linux
本文介绍如何使用 `nc`(Netcat)工具结合笑脸漏洞(Smiley Bug)攻击 Metasploitable2 Linux 靶机。首先概述了 `nc` 的基本功能和高级用法,包括建立连接、监听端口、文件传输等操作。接着详细描述了笑脸漏洞的原理及其在网络攻防中的应用,展示了通过 `nc` 发送恶意输入检测漏洞的方法。最后结合 Python 脚本实现更复杂的攻击场景,并强调了合法性和环境隔离的重要性。
540 13
|
算法 安全 搜索推荐
深入理解密码学技术
深入理解密码学技术
468 1
|
编解码 前端开发 JavaScript
响应式设计与移动端适配技巧:打造无缝用户体验
【7月更文挑战第29天】响应式设计与移动端适配是提升网站和应用用户体验的关键环节。通过遵循响应式设计的核心原则,并结合一系列移动端适配技巧,我们可以打造出既美观又实用的跨平台应用,满足不同用户的多样化需求。随着技术的不断进步和用户需求的日益复杂,持续学习和实践这些技巧将是我们作为开发者的重要任务。

热门文章

最新文章

下一篇
开通oss服务