Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL中的重复记录_Java_Mysql_Hashcode - Fatal编程技术网

Java SQL中的重复记录

Java SQL中的重复记录,java,mysql,hashcode,Java,Mysql,Hashcode,通过计算表行的哈希代码来检查重复记录: 我正在通过用户界面将excel文件上传到mysql数据库中,在实际插入记录之前,我必须根据主表中已存在的记录(记录数可能为2500000)识别重复记录,并且我必须尽快这样做 我的解决方案是在表中再添加一个字段,比如Hashcode,在插入记录时,我将计算每行的Hashcode,在检查重复行时,我将只匹配Hashcode字段。如果主表中存在Hashcode,则记录是重复的,否则它是唯一的 由于我不知道mysql数据库的功能,有没有其他方法可以更快地实现这一点

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

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

我的解决方案是在表中再添加一个字段,比如Hashcode,在插入记录时,我将计算每行的Hashcode,在检查重复行时,我将只匹配Hashcode字段。如果主表中存在Hashcode,则记录是重复的,否则它是唯一的

由于我不知道mysql数据库的功能,有没有其他方法可以更快地实现这一点

谢谢

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%的重复,您不必添加新的哈希列并检查它……

对2500000条记录进行哈希运算将为计算时间增加一个很好的数据块,即使哈希算法不是特别强大。这些记录没有唯一的ID,您可以进行检查吗?您可以用一种不需要检查重复行的方式来设计表。如果您告诉我们您的表属性,说明会更清楚。2500000条记录是表中插入时已保存其自身哈希代码的记录总数,它们没有唯一的id重复的记录将在某些字段上进行检查SSO您可以将所有字段作为主键组合在一起,以达到此目的,无需创建hashcode@Amar我想识别重复记录并将其显示给用户,用户将决定保留和不保留哪个记录,因此将它们作为主键不符合我的目的。在b选项中,它将解决一个表的问题,但我必须比较的记录位于不同的暂存表中,只需加入选择其他表格,然后按说明选择COL。