MySQL:关于 key_len 的计算方式 ?

作者站长头像
站长
· 阅读数 6

MySQL 版本:8.0.18

创建测试表

CREATE TABLE student (
  id int(11) PRIMARY KEY,
  student_name char(20) NOT NULL,
  KEY student_name_index (student_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

添加测试数据

INSERT INTO student VALUES(1, 'Jack');
INSERT INTO student VALUES(2, 'Lucy');
INSERT INTO student VALUES(3, 'Lily');

EXPLAIN 查看执行计划

explain select * from student where student_name = 'Lucy';

MySQL:关于 key_len 的计算方式 ?请问仅有 3 条记录,key_len 为什么不是 20 * 3 = 60,而是 80 呢?

回复
1个回答
avatar
test
2024-06-30

utf8mb4 一个字符是 4 字节,你这 char(20),所以 20 * 4 = 80,跟你多少行数据没有关系。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容