通过计算表行的哈希码来检查重复记录:
在实际插入记录之前,我通过用户界面将 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/