Mysql EXPLAIN 之 key_len
阿新 • • 發佈:2020-12-28
技術標籤:mysql
修改編碼
# 資料庫
alter database employees character set latin1;
alter database employees character set utf8;
alter database employees character set utf8mb4;
# 表
alter table employees character set latin1;
alter table employees character set utf8;
alter table employees character set utf8mb4;
# 欄位
ALTER TABLE employees change first_name first_name varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE employees change last_name last_name varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci;
# 檢視欄位編碼
SHOW FULL COLUMNS FROM employees
# 檢視utf8編碼
SHOW CHARACTER SET LIKE 'utf8%' ;
key_len
固定欄位
char(10) 允許NULL = 10 * (utf8mb4=4, utf8=3, gbk=2, latin1=1) +1 (NULL)
char(10) 不允許NULL = 10 * (utf8mb4=4, utf8=3, gbk=2, latin1=1)
變長欄位
varchar(10) 允許NULL = 10 * (utf8mb4=4, utf8=3, gbk=2, latin1=1) +1 (NULL)+2(變長欄位)
varchar(10) 不允許NULL = 10 * (utf8mb4=4, utf8=3, gbk=2, latin1=1) +2 (變長欄位)
demo
latin1
套用公式
# varchar + varchar + int
(14*1+2)+(16*1+2) + 4 = 38
utf8
套用公式
# varchar + varchar + int
(14*3+2)+(16*3+2) + 4 = 46+50+4 = 100
utf8mb4
套用公式
# varchar + varchar + int
(14*4+2)+(16*4+2) + 4 = 58+68+4 = 130