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 呢?
utf8mb4 一个字符是 4 字节,你这 char(20),所以
20 * 4 = 80
,跟你多少行数据没有关系。