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';

image.png
请问仅有 3 条记录,key_len 为什么不是 20 * 3 = 60,而是 80 呢?

阅读 1.9k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏