MySQL数据库中长度为384的VARCHAR字段的索引

MySQL数据库中长度为384的VARCHAR字段的索引,mysql,varchar,myisam,Mysql,Varchar,Myisam,我有一个varchar(384)将电子邮件存储在MyISAM表中,我想检查电子邮件是否存在,但索引长度限制是333字节(因为我使用的是utf8(1000字节/3字节)) 那么,使用全文索引或使用二进制文件(16)(带有冲突检查)中的电子邮件md5哈希创建另一个字段来搜索指定电子邮件是否存在的最佳方法是什么 [编辑] 使用1M记录进行测试 Fulltext index: ~300 ms 333 length index: ~15 ms binary(16) md5-hash: ~15 ms 所以

我有一个varchar(384)将电子邮件存储在MyISAM表中,我想检查电子邮件是否存在,但索引长度限制是333字节(因为我使用的是utf8(1000字节/3字节))

那么,使用全文索引或使用二进制文件(16)(带有冲突检查)中的电子邮件md5哈希创建另一个字段来搜索指定电子邮件是否存在的最佳方法是什么

[编辑]

使用1M记录进行测试

Fulltext index: ~300 ms
333 length index: ~15 ms
binary(16) md5-hash: ~15 ms

所以我认为最好的选择是性能上的第二个领域,但是。。。第二个字段=更大的表,这不利于性能或存储。因此,在一个电子邮件长度不超过150个字符的真实场景中,一个VARCHAR(384)中的150长度索引就足够了。

上周,我在数据库中添加了100000封不同的电子邮件(慢周)

最长的是45个字符。钟形曲线的峰值为21-22个字符

因此,如果愿意,最多可存储384个字符,但只对前45个字符进行索引。即使在索引返回重复项的罕见情况下,从磁盘读取底层记录的额外I/O也不会杀死您


祝你好运。

我知道我可以有一个150长度的字段来存储电子邮件。但我在玩假设表,384是电子邮件的最大长度。