我有一个varchar字段,最多可包含225个字符,我需要在WHERE
子句中使用此列的快速查找。
所以索引是一个好主意,但我听说索引大型列会减慢速度,并且应该创建一个单独的列,用于存储第一列的较短哈希并为此新列编制索引。
然后查询将执行WHERE hash_column = hash(x) AND long_column = x
。
这是一个很好的解决方案吗?我应该使用什么哈希?该表将有很多条目(超过数百万)。碰撞怎么样?如果具有相同散列的条目数量变得太多,该怎么办?即使有数十亿条款,它们是否会变得太多,或者是否存在不会发生冲突的哈希值?
在哈希列上有这个1索引还是我需要添加任何其他索引吗?
感谢您的帮助
编辑:我使用InnoDB。