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

​总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql之跨库关联查询(dblink)问题

    mysql之跨库关联查询(dblink)问题

    这篇文章主要介绍了mysql之跨库关联查询(dblink)问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • MySQL 库的操作案例之从创建配置到备份恢复

    MySQL 库的操作案例之从创建配置到备份恢复

    主要介绍MySQL库创建、字符集配置、查改删备及监控,附实战案例与避坑要点,覆盖核心操作,本文就从实战角度出发,把MySQL库操作的核心知识点讲透,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • MySQL中存储过程(procedure)的使用及说明

    MySQL中存储过程(procedure)的使用及说明

    存储过程是预先定义的SQL语句集合,可在数据库中重复调用,它们提供事务性、高效性和安全性,MySQL和Java中均可创建和调用存储过程,示例展示了如何在MySQL中创建和调用存储过程,以及如何在Java中实现存储过程的调用
    2025-11-11
  • Mysql 5.6使用配置文件my.ini来设置长时间连接数据库的问题

    Mysql 5.6使用配置文件my.ini来设置长时间连接数据库的问题

    这篇文章主要介绍了Mysql 5.6使用配置文件my.ini来设置长时间连接数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • MySQL的mysqldump工具用法详解

    MySQL的mysqldump工具用法详解

    这篇文章主要介绍了MySQL的mysqldump工具用法详解,同时附带了相关Source命令的用法,详解需要的朋友可以参考下
    2015-07-07
  • mysql查看用户权限常用的方法

    mysql查看用户权限常用的方法

    MySQL是一个流行的开源关系型数据库管理系统,具有强大的功能和灵活的用户权限控制机制,这篇文章主要给大家介绍了关于mysql查看用户权限常用的方法,需要的朋友可以参考下
    2024-03-03
  • Mysql 进行SQL调优的方法

    Mysql 进行SQL调优的方法

    文章详细介绍了MySQL优化索引的多种方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-11-11
  • MySql如何查看索引并实现优化

    MySql如何查看索引并实现优化

    这篇文章主要介绍了MySql如何查看索引并实现优化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • MySQL数据查询limit子句用法举例

    MySQL数据查询limit子句用法举例

    这篇文章主要介绍了MySQL数据查询limit子句用法的相关资料,LIMIT子句在MySQL中用于限制查询结果集的行数,适用于分页显示和限制数据量,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • mysql 不能插入中文问题

    mysql 不能插入中文问题

    当向mysql5.5插入中文时,会出现类似错误 ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column
    2011-09-09

最新评论