SQL中的重复记录

时间:2014-09-26 10:13:31

标签: java mysql hashcode

通过计算表格行的哈希码来检查重复记录:

我在实际插入记录之前通过用户界面将excel文件上传到mysql数据库中我必须根据主表中已经存在的记录识别重复记录(记录数量可以是2500000)并且我必须这样做尽可能快。

我对此的解决方案是我在表中添加一个字段说Hashcode并且在插入记录时我将计算每行的哈希码,并且在检查重复行时我将仅匹配哈希码如果哈希码存在于主表中,则记录重复,否则它是唯一的。

有没有其他方法以更快的方式执行此操作,因为我不知道mysql数据库功能

谢谢!

1 个答案:

答案 0 :(得分:1)

a)如果你想坚持哈希码使用类似

的东西
 SELECT sha256(CONCAT(col1, "-", col2, "-", col3)) FROM ...

而不是MD5() - 最近我遇到了一些碰撞。别忘了在新列上添加索引。

b)为了您的目的,一个简单的

 SELECT col1, col2, col3, Count(*) 
 FROM table 
 GROUP BY 1,2,3 HAVING Count(*) > 1 

可能就是你想要的。这将给你100%的重复,你不必添加一个新的哈希col并检查它...