也就是说,当我们定义一个varchar(255)的字段时,其实它真实使用的空间是256(255+1)字节;( 注意,字段非空,latin1编码 ) 当我们定义一个一个varchar(256)字段时,它真实使用的空间是258(256+2)字节 简单实践证明一下:( 注意,上面的例子字符集用的latin1,如果使用utf8mb4,在mysql...
Mysql 为什么默认定义varchar255 而不是varchar256
先抛出官网答案:
简单翻译一下就是
也就是说,当我们定义一个varchar(255)的字段时,其实它真实使用的空间是256(255+1)字节;( 注意,字段非空,latin1编码 ) 当我们定义一个一个varchar(256)字段时,它真实使用的空间是258(256+2)字节
简单实践证明一下:
( 注意,上面的例子字符集用的latin1,如果使用utf8mb4,在mysql中一个长度需要四个字节,计算临界值时需要考虑。 )
有兴趣的朋友还可以试着把字段定于成 default null 试试,会发现结果又不一样,可以自己探索下原因
参考: stackoverflow: Why historically do people use 255 not 256 for database field magnitudes? MySQL中VARCHAR最大长度是多少?CHAR和VARCHAR有哪些区别?
2022-06-22