MySQL EXPLAIN 中key_len的计算

一、MySQL数据类型


1.1 整数类型

1、TINYINT    1字节

2、SMALLINT    2字节

3、MEDIUMINT    3字节

4、INT   4字节

5、BIGINT   8字节

当选择UNSIGNED属性时,表示不允许负值,可以使正数的上限提高一倍。


1.2 实数类型

DECIMAL  9字节。小数点左边4字节,小数点1字节,小数点右边4字节

1.3 字符串类型

char(10)    定长,括号内数字表示字符数

varchar(10)    不定长,括号内数字表示字符数

关于varchar的设置:


二、MySQL explain中key_len的计算


2.1 计算方式

索引字段的附加信息:可以分为变长和定长数据类型讨论,当索引字段为定长数据类型时,如char,int,datetime,需要有是否为空的标记,这个标记占用1个字节(对于not null的字段来说,则不需要这1字节);对于变长数据类型,比如varchar,除了是否为空的标记外,还需要有长度信息,需要占用两个字节

对于,char、varchar、blob、text等字符集来说,key len的长度还和字符集有关,latin1一个字符占用1个字节,gbk一个字符占用2个字节,utf8一个字符占用3个字节,utf8mb4一个字符占用4个字节。

2.2 key_len计算范例


你可能感兴趣的:(MySQL EXPLAIN 中key_len的计算)