2017-10-18 172 views
-1

(SSIS)我有一个有3200万条记录的目标表,我只是想和新来的3200万条记录进行比较,在那个新记录中可能有(新记录以及更新或修改的记录以及旧记录)。我想比较和插入新记录,更新或修改记录并省略旧记录。 看到我用了lookup花了太多时间。所以请帮助我克服比较时间来解决我的性能问题。ssis比较两个海量数据表

+0

这与SSIS无关。要么执行连接,要么*不带* 32M记录。在源数据库上启用更改跟踪并*仅*引入更改的行。如果没有更改跟踪,无论如何,比较都需要很长时间 - 即使使用索引,您也可以*比较32M行和32M行。 –

+0

除此之外,你不提供任何信息,所以只能推测。源数据是否有“更改”列或不?您可以使用它来只读取上次导入后更改的行。主键是否增量?您可以使用它仅加载上次导入后创建的*键*。您可以使用任一选项*避免*加载32M记录。 –

+0

另一种选择是批量执行更新。这样可以避免洪泛tempdb并填写事务日志 –

回答

0

如果您每次需要查看所有3200万条传入记录以查看其中是否有更改,那么最具性能的解决方案是将所有现有记录替换为新记录,而不管它们是否已更改。

将所有3200万条记录导入到临时表中,然后执行切换或重命名以使临时表成为新的永久表。