【发布时间】:2017-09-03 08:11:22
【问题描述】:
我使用 SQL Server 2012 和 SSIS。我在同一服务器和同一数据库中有两个表。我需要将两个表的所有记录都转移到第三个表中。
我需要在 UNION ALL 的结果中添加一些列(如执行 ID 和一些包参数),然后我必须将记录转移到第三个表中。
我有两种解决方案,但我不知道哪个更有效。
解决方案 1:在 SSIS 中使用两个 OLE DB DataSources 并使用 Union All Component
解决方案 2:在 SQL Server 端使用 Union All,在 SSIS 中只使用一个 OLE DB Source。
哪个效率更高?
【问题讨论】:
-
我赌的是后者,但你注意到时差了吗?对我来说,减少对数据源的调用更有意义。
-
我应该说您的第二个选项更有效,因为您正在对 sql 数据库进行联合,并且您只对数据库进行一次调用。执行时有很大的时差吗?
-
现在,我的表每张不到 10000 行。但未来他们将拥有超过百万行。因此,我想在这里选择最佳实践,并且在某些包中我需要 UNION 两个以上的表
-
IMO,当您需要合并来自两个不同来源的数据时,您应该只使用联合所有数据流组件,即使这样,我也可能更喜欢将数据拉入登陆表并在上执行 UNION ALL目标服务器。
-
如果第三张表也在同一台服务器上,那为什么还要使用 SSIS?难道你不能只写一个简单的 SQL 语句来完成所有这些吗?
标签: sql-server tsql ssis sql-server-2012 union-all