mysql的varchar类型到底最大长度是多少?

发布时间:2020/05/15 编辑:天马行空 阅读(116)

varchar(n),n代表什么意思?
mysql5.0.3之前varchar(n)这里的n表示字节数
mysql5.0.3之后varchar(n)这里的n表示字符数,比如varchar(200),不管是英文还是中文都可以存放200个


n最大可以设置多少?

mysql要求一个行定义长度不能超过65535个字节,不包括text、blob等大字段类型,varchar的长度受到此长度限制,和其他非大字段加起来不能超过65535个字节。注意这个地方说的是字节,那么字节和你使用的编码是有关系的。


如果是GBK编码,一个字符占用的是2个字节,对应n的最大值就是65535/2=32766;

如果是UTF8编码,一个字符占用的是3个字节,对应n的最大值就是65535/2=21845;

如果是utf8mb4编码,一个字符占用的是4个字节,对应n的最大值就是65535/2=16383;


若超过这个限制,就会出现报错了。


我们经常看到varchar(255),为什么?

首先,255并不是varchar这种字段类型的最大长度。

这里面有一个概念:InnoDB存储引擎的表索引的前缀长度最长是767字节(bytes)。
你如果需要建索引,就不能超过 767 bytes;utf8编码时 255*3=765bytes ,恰恰是能建索引情况下的最大值。

varchar(255) 不是最优的字符长度,最优还是应该根据实际需要的来。但是这是一个保证你能少出错的一个很好的默认值。

关键字mysql