【发布时间】:2013-04-24 19:08:21
【问题描述】:
我读到 MySQL 5.6 只能索引 the first 767 bytes 的 varchar(或其他基于文本的类型)。我的模式字符集是utf-8,因此每个字符最多可以存储 3 个字节。由于 767/3 = 255.66,这将表明需要以 255 个字符编制索引的文本列的最大长度。经验似乎证实了这一点,如下所示:
create table gaga (
val varchar(255),
index(val)
) engine = InnoDB;
但是将 val 的定义更改为 varchar(256) 会产生“错误代码:1071。指定的密钥太长;最大密钥长度为 767 字节”。
在当今时代,255 个字符的限制似乎非常低,所以:这是正确的吗?如果这是用 MySQL 索引更大的文本的最佳方法是什么? (我应该避免它吗?存储一个 SHA?使用另一种索引?使用另一种数据库字符编码?)
【问题讨论】: