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