通过计算表格行的哈希码来检查重复记录:
我在实际插入记录之前通过用户界面将excel文件上传到mysql数据库中我必须根据主表中已经存在的记录识别重复记录(记录数量可以是2500000)并且我必须这样做尽可能快。
我对此的解决方案是我在表中添加一个字段说Hashcode并且在插入记录时我将计算每行的哈希码,并且在检查重复行时我将仅匹配哈希码如果哈希码存在于主表中,则记录重复,否则它是唯一的。
有没有其他方法以更快的方式执行此操作,因为我不知道mysql数据库功能
谢谢!
答案 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并检查它...