MySQL 字节占用分析

MySQL表ID字段选择整型还是字符型?

回答这个问题,先了解下整型跟字符型的存储

MySQL字符类型

类型占用字节表示范围
CHAR(M)与字符集相关(单行不能超过65535个字节)1 <= M <= 255
VARCHAR(M)与字符集相关(单行不能超过65535个字节)1 <= M <= 255
TINYBLOB, TINYTEXTL+1 字节L< 2 ^ 8(255B)
BLOB, TEXTL+2 字节L< 2 ^ 16(64K)
MEDIUMBLOB, MEDIUMTEXTL+3 字节L< 2 ^ 24(16M)
LONGBLOB, LONGTEXTL+4 字节L< 2 ^ 32(4G)
ENUM('value1','value2',...)1 或 2 个字节, 取决于枚举值的数目(最大值65535)
SET('value1','value2',...)1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)

 

MySQL数值类型

类型占用字节表示范围
TINYINT1个字节-128~127
SMALLINT2个字节-32768~32767
MEDIUMINT3个字节-8388608~8388607
INT4个字节-2147483648~2147483647
BIGINT8个字节-9223372036854775808~9223372036854775807
FLOAT(X)4(X < = 24) 或 8( 25 < = X < = 53 )
FLOAT4 个字节
DOUBLE8 个字节
DOUBLE PRECISION8 个字节
REAL8 个字节
DECIMAL(M,D)M字节(D+2 , 如果M < D)
NUMERIC(M,D)M字节(D+2 , 如果M < D)


日期和时间类型

DATE 3 个字节
DATETIME 8 个字节
TIMESTAMP 4 个字节
TIME 3 个字节
YEAR 1 字节

 

存储不同字符集占用的字节不同

UTF-8:一个汉字 = 3个字节,英文是一个字节

UTF8mb4:兼容utf8,且比utf8能表示更多的字符,支持4个字节


GBK: 一个汉字 = 2个字节,英文是一个字节

 

文章开始疑问的答案

根据上面信息的了解可以得出,要存储 ID = 1000000

选择数值型: 4字节

选择字符型: 7字节

毫无疑问,数值型占用更小的存储空间,性能也必须优于字符型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值