如果在导入期间这些字段是md5'd,并且在比较中使用的md5字段而不是源字符串字段,两个字符串字段的索引比较会更快吗?
答案 0 :(得分:1)
可能,如果琴弦很长或非常相似。
更重要的是,如果字符串很长,MD5列的索引可能会更小。较小意味着更有可能适应内存,并且更快地从磁盘读取。因此,如果通过这样做可以获得任何性能提升,那么大部分都可能来自于此。
那就是说,你必须权衡阅读中的任何性能提升和计算校验和的额外成本,并且由于添加新列而写入值和增加的表格大小。
答案 1 :(得分:0)
如果源字符串大于md5sum(如果对其进行十六进制编码,则为32字节),是的,使用md5sum会更快。
虽然概率很低,但你可以通过哈希collision来获得相同的md5总和。也就是说,2个字段可能是相同的,而它们不是,所以请三思而后行。
答案 2 :(得分:0)
可能不是。它可能取决于使用的索引类型。您可以在创建索引时指定USING HASH
。在这种情况下,MySQL将使用某种散列(也可能是MD5)来构建索引,但它将避免冲突的风险。当两个值具有相同的散列时,散列将仅作为两个行的范围。