MySQL文本索引只检查256个字符?

时间:2013-09-18 12:46:50

标签: mysql indexing

MySQL在文本列上的UNI键似乎只查看前255个字符来测试唯一性。如果我有两个以相同的255个字符开头的字符串,则不能将它们都添加到该表中。

有没有办法克服这个问题?

我键入此字段的原因是为了确保唯一性而不管查询(不受我的控制),而不是性能。

1 个答案:

答案 0 :(得分:2)

您无法为密钥长度超过255 symbols before MySQL 4.1.2 / 1000 bytes (767 for InnoDB) for higher versions的MySQL中的文本字段编制索引 - 而且您无法原生地克服这一点。

最简单的解决方案是评估md5哈希并将其存储在另一列中,然后通过它创建唯一索引并创建trigger before insert& before update将自动为您插入md5。如果您正在运行MySQL服务器4.x - 那么您需要自己处理(因为没有可用的触发器)