MySQL执行计划中key_len计算规则解读

 更新时间:2026年03月06日 09:15:36   作者:路~~~  
MySQL执行计划中key_len计算规则:影响因素包括索引列为字符串类型、是否为null、字符集等,公式包括varchar()和char(),常用字符集有utf8mb4、utf8、gbk、latin等

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五大关系数据库的对象名称和转义字符

    这篇文章主要介绍了sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用数据库具有一定的参考借鉴价值,需要的朋友可以参考下
    2025-11-11
  • MYSQL administrator 使用

    MYSQL administrator 使用

    Administrator 也许你认为可以不需要这个东西,但我还是要建议你下载并使用MySQL Administrator,它提供图形界面以帮助你管理MySQL数据库,Windows用户可以通过命令提示行运行
    2008-06-06
  • 解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago.

    解决MySQL报错:The last packet sent successfu

    这篇文章主要介绍了解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Navicat连接虚拟机mysql常见错误问题及解决方法

    Navicat连接虚拟机mysql常见错误问题及解决方法

    这篇文章主要介绍了Navicat连接虚拟机mysql常见错误问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • MySQL MaxCompute与AnalyticDB实现数据处理与转换过程详解

    MySQL MaxCompute与AnalyticDB实现数据处理与转换过程详解

    AnalyticDB MySQL(简称ads)与 MaxCompute(简称odps)进行数据转换时,个别语法有差别,记录下来,方便备查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • MySQL 8.0 中 LIMIT 优化新特性使用场景及最佳实践

    MySQL 8.0 中 LIMIT 优化新特性使用场景及最佳实践

    MySQL 8.0.21新增prefer_ordering_index参数,允许干预优化器在排序索引与过滤索引间的偏好,解决分页查询性能问题,提升效率,本文给大家介绍MySQL8.0 中LIMIT优化新特性,感兴趣的朋友一起看看吧
    2025-07-07
  • 详解MySQL如何避免克隆失败后再次初始化

    详解MySQL如何避免克隆失败后再次初始化

    本文章讨论了当您没有足够的磁盘空间来存储两个数据集时,使用带有安全选项DATA DIRECTORY 的 CLONE INSTANCE 命令,所以接下来小编给大家详细的介绍一下,MySQL如何避免克隆失败后再次初始化,需要的朋友可以参考下
    2023-10-10
  • 安装mysql8.0.11及修改root密码、连接navicat for mysql的思路详解

    安装mysql8.0.11及修改root密码、连接navicat for mysql的思路详解

    这篇文章主要介绍了安装mysql8.0.11以及修改root密码、连接navicat for mysql,需要的朋友可以参考下
    2018-06-06
  • MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引详细介绍

    MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引详细介绍

    本文主要介绍了MySQL的索引类型,根据索引的存储方式来划分,索引可以分为聚簇索引和非聚簇索引。聚簇索引的特点是叶子节点包含了完整的记录行,而非聚簇索引的叶子节点只有所以字段和主键ID,感兴趣的同学可以阅读本文
    2023-04-04
  • MySQL索引设计原则深入分析讲解

    MySQL索引设计原则深入分析讲解

    为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。索引设计不合理或者缺少索引都会对数据库和应用程序的性能造成障碍。高效的索引对于获得良好的性能非常重要。设计索引时,应该考虑相应准则
    2023-01-01

最新评论