【发布时间】:2020-10-30 21:49:02
【问题描述】:
在尝试索引 VARCHAR(256) 字段时,我收到以下错误:
MySQL 说:索引列大小太大。最大列大小为 767 字节。
它使用VARCHAR(255) 工作,但我很好奇为什么 varchar 转换为字段中每个“char”的 3 个保留字节,如果它使用可变宽度编码,它是否只是假设永远“最坏情况”字母,如果utf-8,那么三个字节?
另外,如果我只使用英文,获得大于 255 大小的最佳方法是在列上使用ascii 编码吗?
【问题讨论】:
-
字符长度转换为字节进行计算。
-
这在旧版本的 MySQL 中是一个限制,但在新版本中已得到纠正。您使用的是哪个 MySQL?是 5.7 还是 8.0 的选项?
-
您是否使用任何排序规则?
-
256 很短,请参阅dbfiddle.uk/…,但是为什么要以该大小对其进行索引,也许 FULLTEXT INDEX 会更好
-
@tadman 我目前使用的是 5.7。