一、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个字节。