我有一个非常简单的表,它只有两个值:id
和type
。 type
中最长的字符串是11个字符("理事会")。
我应该在CHAR(11)
命令中使用CHAR(12)
还是CREATE
? MySQL实际上是为CHAR(11)
存储了12个字节,其中第12个字节是NULL字符还是与存储无关?
编辑:正如Joni所指出的,这不使用11或12个字节,它使用33或36个字节,因为我存储为utf-8。但是,我的问题是我是否应该在CHAR(x)
答案 0 :(得分:2)
CHAR(M)所需的存储空间是
M×w字节,0 <= M <= 255,其中w是字符集中最大长度字符所需的字节数。
(资料来源:https://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html)
也就是说,如果使用ascii
或其他单字节编码,CHAR(M)
将以M字节存储。如果使用utf8
,它将以3 * M字节存储。