长字符串的MySQL索引

Sib*_*Guy 3 mysql

我有MySQL InnoDb表,我想存储长(限制是20k符号)字符串.有没有办法为这个字段创建索引?

Gid*_*ise 8

您可以将该字段的MD5索引到另一个字段并将其编入索引.那么当你搜索你的匹配与未编入索引的完整字段和md5字段时.

  • 我们可以看看一个例子吗? (2认同)

Ted*_*opp 5

您需要限制索引的长度,否则您可能会收到错误 1071(“指定的键太长”)。关于CREATE INDEX的 MySQL 手册条目对此进行了描述:

可以创建仅使用列值的前导部分的索引,使用 col_name(length) 语法指定索引前缀长度:

  • 可以为 CHAR、VARCHAR、BINARY 和 VARBINARY 列指定前缀。

  • BLOB 和 TEXT 列也可以建立索引,但必须给出前缀长度。

  • 对于非二进制字符串类型,前缀长度以字符为单位给出;对于二进制字符串类型,前缀长度以字节为单位给出。也就是说,索引条目由 CHAR、VARCHAR 和 TEXT 列的每个列值的第一个长度字符以及 BINARY、VARBINARY 和 BLOB 列的每个列值的第一个长度字节组成。

它还添加了这一点:

前缀支持和前缀长度(如果支持)取决于存储引擎。例如,对于 MyISAM 表,前缀最长可达 1000 字节;对于 InnoDB 表,前缀最长可达 767 字节。