在 MySQL 中索引数百万个电子邮件地址同时最小化索引大小的最佳方法是什么?
需要索引来快速检查表中是否存在电子邮件。允许重复。
同样,目标是最小化索引的大小。目前在 varchar 字段上使用标准索引,但考虑创建二进制哈希并索引前几个字符。还有其他选择吗?
在 MySQL 中索引数百万个电子邮件地址同时最小化索引大小的最佳方法是什么?
需要索引来快速检查表中是否存在电子邮件。允许重复。
同样,目标是最小化索引的大小。目前在 varchar 字段上使用标准索引,但考虑创建二进制哈希并索引前几个字符。还有其他选择吗?
Unique Index
如果您不想要任何重复条目,请用于电子邮件。
如果完成任何重复条目,它将不会插入任何新行并会出错。
这取决于。尝试两者并测试。请记住,这个等式不仅仅是读取速度。如果该表被大量更新和插入,那么您应该会看到插入的效果。
我怀疑(我在这里可能完全错了)普通的 b-tree 索引会将值存储在树中,而哈希索引需要计算哈希然后存储到树中。这可能意味着哈希索引使用更少的空间,但会做更多的工作来更新索引或插入新值。
在我看来,在哈希索引中插入一个新值可能需要类似
1)为值创建哈希键。
2)将哈希插入索引。
正常的 b 树在哪里
1)将值插入索引。
反正我的 2 美分值。