MySQL执行计划中key_len计算规则解读
MySQL执行计划中key_len计算规则
今天来说一下MySQL执行计划中key_len的计算,当用explain查看SQL的执行计划时,执行计划中会显示出key_len的值,根据这个值可以判断联合索引的覆盖长度,从而在可以获知SQL语句走了联合索引中的哪些索引。(覆盖长度一般情况是越长越好)
影响索引长度因素
(索引列为字符串类型的情况)

key_len的计算公式
- varchar():表字符集长度*列长度+2(变长)+1(null) 若是列被定义为"not null",则不需要加1
- char():表字符集长度*列长度+1(null) 若是列被定义为"not null",则不需要加1
常用的字符集:
- utf8mb4:4个字节
- utf8:3个字节
- gbk:2个字节
- latin:1个字节
示例:
表的字符集选用utf8mb4,计算
varchar(10),not null ---> key_len=4*10+2=42 char(10),null ---> key_len=4*10+1=41
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符
这篇文章主要介绍了sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用数据库具有一定的参考借鉴价值,需要的朋友可以参考下2025-11-11
解决MySQL报错:The last packet sent successfu
这篇文章主要介绍了解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
MySQL MaxCompute与AnalyticDB实现数据处理与转换过程详解
AnalyticDB MySQL(简称ads)与 MaxCompute(简称odps)进行数据转换时,个别语法有差别,记录下来,方便备查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2022-12-12
MySQL 8.0 中 LIMIT 优化新特性使用场景及最佳实践
MySQL 8.0.21新增prefer_ordering_index参数,允许干预优化器在排序索引与过滤索引间的偏好,解决分页查询性能问题,提升效率,本文给大家介绍MySQL8.0 中LIMIT优化新特性,感兴趣的朋友一起看看吧2025-07-07
安装mysql8.0.11及修改root密码、连接navicat for mysql的思路详解
这篇文章主要介绍了安装mysql8.0.11以及修改root密码、连接navicat for mysql,需要的朋友可以参考下2018-06-06
MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引详细介绍
本文主要介绍了MySQL的索引类型,根据索引的存储方式来划分,索引可以分为聚簇索引和非聚簇索引。聚簇索引的特点是叶子节点包含了完整的记录行,而非聚簇索引的叶子节点只有所以字段和主键ID,感兴趣的同学可以阅读本文2023-04-04


最新评论