java - SQL中的重复记录

标签 java mysql hashcode

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

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

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

由于我不知道 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% 的重复,你不必添加新的哈希列并检查它......

关于java - SQL中的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26057177/

相关文章:

java - 函数可以在类的字段中使用吗(java)

Mysql二级查询

MySQL 的 DECIMAL 顺序不正确?

c++ - MySQL源代码中 "struct PSI_thread"的定义在哪里?

c# - C# 中的 GetHashCode 指南

java - 在intelliJ中,如何将方法移动到接口(interface)的实现类?

java - Websphere MQ v7 - Java 中的安全退出?

java - 将 Spring-ws webservicetemplate 请求以 XML 格式保存到 DB

计算浮点值哈希码的算法?

java - 以下情况的 hashCode() 方法 : two sets are equal when they have at least one element in common?