Mysql 中索引长度的计算方式
Mysql 通过执行计划(explain)中的key_len(索引长度)来判断是否合理使用到联合索引,索引长度的计算方式
key_len 的计算方式
key_len 计算规则如下:
- 字符串
- char(n): n字节长度
- varchar(n): 如果是utf8编码, 则是3n + 2字节; 如果是utf8mb4编码, 则是4n + 2字节.
- 数值类型
- TINYINT: 1字节
- SMALLINT: 2字节
- MEDIUMINT: 3字节
- INT: 4字节
- BIGINT: 8字节
- 时间类型
- DATE: 3字节
- TIMESTAMP: 4字节
- DATETIME: 8字节
- 字段属性
- NULL属性占用一个字节
- 如果一个字段是NOT NULL的, 则没有此属性
判断依据
如果联合索引的实际长度 和执行计划中的 key_len 相等,则有可能用到联合索引的全部字段,否则用其中一个字段