mysql explain key_len是如何计算的?
Posted 你个佬六
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql explain key_len是如何计算的?相关的知识,希望对你有一定的参考价值。
表结构
索引情况:
explain执行计划
key_len是如何计算的?
决定key_len值的三个因素:
1.字符集
2.长度
3.是否为空
常用的字符编码占用字节数量如下::
目前我的数据库字符编码格式用的:UTF8占3个字节。
mysql常用字段占用字节数:
字段类型 | 占用字节数 |
---|---|
char(n) | n |
varchar(n) | n + 2 |
tinyint | 1 |
smallint | 2 |
int | 4 |
bigint | 8 |
date | 3 |
timestamp | 4 |
datetime | 8 |
此外,如果字段类型允许为空则加1个字节。
上图中的 184是怎么算的?
184 = 30 * 3 + 2 + 30 * 3 + 2
再把test1表的code字段类型改成char,并且改成允许为空:
执行sql如下:
explain select code from test1;
结果:
怎么算的?
183 = 30 * 3 + 1 + 30 * 3 + 2
还有一个问题:为什么这列表示索引使用是否充分呢,还有使用不充分的情况?
执行sql如下:
explain select code from test1 where code=‘001’;
结果:
上图中使用了联合索引:idx_code_name,如果索引全匹配key_len应该是183,但实际上却是92,这就说明没有使用所有的索引,索引使用不充分。
以上是关于mysql explain key_len是如何计算的?的主要内容,如果未能解决你的问题,请参考以下文章