Sql server SSI是否插入大量行(如果不存在)?

Sql server SSI是否插入大量行(如果不存在)?,sql-server,ssis,Sql Server,Ssis,对于从服务器A到B的许多非常大的表,如果不存在,我需要执行insert/delete。查找组件工作不好,因为它为每一行发出一个查询,以检查目标数据库表中是否存在该行 好的选择是什么 这些表都有PK,但它们可能各自有几百GB的大小。目标表可能只有3%的行未命中。因此,合并组件可能不是一个好选项?您可以使用合并SSIS组件。我个人发现,通过将所有数据加载到临时表,然后在存储过程中运行Merge T-sql语句,性能会更好。您可以使用Merge SSIS组件。我个人发现,通过将所有数据加载到临时表,然

对于从服务器A到B的许多非常大的表,如果不存在,我需要执行insert/delete。查找组件工作不好,因为它为每一行发出一个查询,以检查目标数据库表中是否存在该行

好的选择是什么


这些表都有PK,但它们可能各自有几百GB的大小。目标表可能只有3%的行未命中。因此,合并组件可能不是一个好选项?

您可以使用合并SSIS组件。我个人发现,通过将所有数据加载到临时表,然后在存储过程中运行Merge T-sql语句,性能会更好。

您可以使用Merge SSIS组件。我个人发现,通过将所有数据加载到临时表,然后在存储过程中运行Merge T-sql语句,可以获得更好的性能。

无论您是否使用insert where some column not in从另一个表中选择另一个列或Merge或其他验证方法,您仍然希望检查记录是否存在。。。所以不管怎样,检查都必须以这样或那样的方式进行,不是吗?你能举一个你正在处理的数据的例子吗?如果你有主键,您可以使用合并-联接-完全联接,然后根据表2的PK是否为空执行条件拆分。不管您使用的是insert where SOMENT not in,还是从另一个表中选择另一列,或者使用merge或其他验证方法,您仍然要检查记录是否存在。。。所以不管怎样,检查都必须以某种方式进行,不是吗?你能举一个你正在处理的数据的例子吗?如果你有主键,你可以使用合并联接完全联接,然后根据表2的PK是否为空进行条件拆分。我更新了问题以了解更多信息。似乎合并组件和临时表都不是一个好的选择?t-SQLMERGE命令执行得很好。我认为,无论您希望找到多少个匹配项,任何其他进程都不会执行得很好。T-sql合并在大型链接服务器表上运行得好吗?我更新了该问题以了解更多信息。似乎合并组件和临时表都不是一个好的选择?t-SQLMERGE命令执行得很好。我认为,无论您希望找到多少个匹配项,任何其他进程都不会执行得很好?