50 万笔新数据插入到数据库,如何避免重复?

2020-12-11 08:20:08 +08:00
 Devin
1. 50 万笔新数据里可能有重复
2. 数据库原有记录 1000 万笔,新数据可能与原有记录重复

不插入(跳过)以上出现重复的新数据,怎么做最有效率?
5712 次点击
所在节点    程序员
27 条回复
autogen
2020-12-12 00:33:50 +08:00
50 万不多不少,1 分钟应该能导完
janus77
2020-12-12 01:28:26 +08:00
50 万本身先去个重。我个人的话,先取 10 个字段里的第一个过滤遍,第二个再过滤一遍,然后剩下的 8 个字段做 hash 过滤一遍。这样做的原因是前两遍可以以最小的成本达到最大比例的过滤效果。当然这个前 n 遍可以根据你们字段复杂度来定。这整个步骤在临时表做
然后就是 50 万里面剩下的数据,再用 10 个字段做 hash,和主表过滤。完毕
nuistzhou
2020-12-12 10:39:17 +08:00
这数据不多,加个约束很简单,就像楼上说的,不过可能会花点时间。我之前整类似的上亿条的才叫慢...
wangbenjun5
2020-12-12 11:14:28 +08:00
建个索引就能解决的问题,如果追求性能,那就加个布隆过滤器呗
zjttfs
2020-12-12 13:41:08 +08:00
十个字段拼接算出 md5 , 然后 md5 也存进去,md5 字段加唯一索引.
hubahuba
2020-12-12 14:11:22 +08:00
@zjttfs 这是啥操作老哥 求解释
optional
2020-12-12 20:08:33 +08:00
@zjttfs 50w 冲突概率挺大的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/734327

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX