MySQL:关于 key_len 的计算方式 ?
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';
请问仅有 3 条记录,key_len 为什么不是 20 * 3 = 60,而是 80 呢?
回复
1个回答
test
2024-06-30
utf8mb4 一个字符是 4 字节,你这 char(20),所以 20 * 4 = 80
,跟你多少行数据没有关系。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容