在两个oracle模式之间的表中查找重复记录

时间:2015-09-28 22:09:31

标签: database oracle performance oracle11g

我有两个数据库sachems包含数百万条记录(6亿到1亿条记录)(让我们假设学生记录) 第一个模式是暂存模式,第二个是目标产品模式,

我想在复制它之前检查prod架构中是否存在临时架构中的相同用户(如果存在则应用某些合并逻辑)

我有一些PL / Sql代码按顺序运行并匹配记录,但是进程非常慢,即使在索引和性能调整时也是如此。

可以使用的任何匹配器,还是pl / sql函数的多线程?在oracle中有没有更好的选择我可能会丢失?

一种可能的解决方案是从prod模式复制一些数据(参与复制过程的数据)并在分段模式中执行比较,但复制数据开销可能与比较相同。

样本记录:

Student_first_name,Student_Last_name,SSN
foo,              ,bar               ,123456

1 个答案:

答案 0 :(得分:0)

首先 - 在模式之间复制数据不会有利于您的性能,Oracle在模式内查询上执行速度不快。

第二 - 使用单个SQL来识别重复记录(或丢失记录,无论哪个是表的较小部分,然后单独在这些行上执行pl / sql代码)可能会有很大帮助(通过将它们存储在游标中)或者使用专用列来扩散它们,特别是如果每​​天添加的数据量与完整产品表相比可以忽略不计。