mysql字符串比较 - md5更快?

时间:2011-01-21 22:18:04

标签: mysql

如果在导入期间这些字段是md5'd,并且在比较中使用的md5字段而不是源字符串字段,两个字符串字段的索引比较会更快吗?

3 个答案:

答案 0 :(得分:1)

可能,如果琴弦很长或非常相似。

更重要的是,如果字符串很长,MD5列的索引可能会更小。较小意味着更有可能适应内存,并且更快地从磁盘读取。因此,如果通过这样做可以获得任何性能提升,那么大部分都可能来自于此。

那就是说,你必须权衡阅读中的任何性能提升和计算校验和的额外成本,并且由于添加新列而写入值和增加的表格大小。

答案 1 :(得分:0)

如果源字符串大于md5sum(如果对其进行十六进制编码,则为32字节),是的,使用md5sum会更快。

虽然概率很低,但你可以通过哈希collision来获得相同的md5总和。也就是说,2个字段可能是相同的,而它们不是,所以请三思而后行。

答案 2 :(得分:0)

可能不是。它可能取决于使用的索引类型。您可以在创建索引时指定USING HASH。在这种情况下,MySQL将使用某种散列(也可能是MD5)来构建索引,但它将避免冲突的风险。当两个值具有相同的散列时,散列将仅作为两个行的范围。