【发布时间】:2010-08-26 08:43:52
【问题描述】:
我有一个 varchar(384) 将电子邮件存储在 MyISAM 表中,我想检查电子邮件何时存在,但索引长度限制为 333 字节(因为我'm 使用 utf8(1000 字节/3 字节))。
那么,如果指定的电子邮件存在,那么使用 FULLTEXT 索引或在 BINARY(16) 中使用电子邮件 md5-hash 创建另一个字段(带有冲突检查)的最佳方法是什么?
[编辑]
使用 1M 记录进行测试。
Fulltext index: ~300 ms
333 length index: ~15 ms
binary(16) md5-hash: ~15 ms
所以我认为最好的选择是性能的第二个字段,但是...第二个字段 = 更大的表,这对性能或存储不利。因此,在电子邮件不超过 150 个字符的实际场景中,VARCHAR(384) 中的 150 长度索引就足够了。
【问题讨论】:
-
我知道我可以有一个 150 长度的字段来存储电子邮件。但我在玩假设的表格,384 是电子邮件的最大长度。