登录
首页 >  数据库 >  MySQL

MySQL 中的 key_len 为什么会大于索引列的长度?

时间:2024-12-05 20:00:50 407浏览 收藏

小伙伴们对数据库编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《MySQL 中的 key_len 为什么会大于索引列的长度?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

MySQL 中的 key_len 为什么会大于索引列的长度?

MySQL:关于 key_len 计算方式的解析

问题描述:

在 MySQL 8.0.18 中,创建了一个表 student,其中包含一个 char(20) 的列 student_name,并建立了索引 student_name_index。向表中插入了三条数据。

通过使用 EXPLAIN 查看执行计划,发现最终使用的索引的 key_len 为 80。然而,表中只有三条记录,key_len 应该为20 * 3 = 60,为何出现这种情况?

答案解析:

char(20) 定义了一个定长字符类型,可以存储长度不超过 20 个字节的字符串。而 utf8mb4 是一种编码方式,它允许使用不同的字节数来表示不同的字符。对于 utf8mb4 编码,一个字符最多可以占 4 个字节。

因此,对于 student_name 列,其长度为 20 个字符,但由于使用的是 utf8mb4 编码,每个字符实际占用 4 个字节,所以 key_len 实际上为 20 * 4 = 80。

与表中记录的数量无关,key_len 始终是索引列实际占用的字节数。

今天关于《MySQL 中的 key_len 为什么会大于索引列的长度?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>