【发布时间】:2011-10-01 17:54:33
【问题描述】:
这是一个相当直截了当的问题,但我无法通过谷歌搜索找到明确的答案。在 MySQL 5.1.53 上,使用 InnoDB 和 varchar(1024) 字段(我正在索引 Exchange 2010 事件 ID)。我想知道当我索引这个字段时最大密钥长度是多少。如果密钥长度不够长,我想知道是否应该缩短字段并使用 sha512 哈希之类的东西。
【问题讨论】:
这是一个相当直截了当的问题,但我无法通过谷歌搜索找到明确的答案。在 MySQL 5.1.53 上,使用 InnoDB 和 varchar(1024) 字段(我正在索引 Exchange 2010 事件 ID)。我想知道当我索引这个字段时最大密钥长度是多少。如果密钥长度不够长,我想知道是否应该缩短字段并使用 sha512 哈希之类的东西。
【问题讨论】:
InnoDB 内部最大密钥长度为 3500 字节,但 MySQL 本身将其限制为 3072 字节。此限制适用于多列索引中组合索引键的长度。
并且,如上所述:
单列索引的索引键最长可达 767 个字节。相同的长度限制适用于任何索引键前缀。请参见第 12.1.13 节,“CREATE INDEX 语法”。
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
【讨论】: