2017-05-26 51 views
3

我有两个表:SSIS 14 - 临时区域 - 合并两个源正在采取了很多时间

  • 表A:631个476行
  • 表B:12个90行

Eache Table具有我想将其用作键入合并对象的字段ID。在下图中可以看到进程在合并对象之前被阻塞。我已经使用Merge Join对象进行了测试,结果相同... enter image description here

为了使用SSIS 14进行此操作,还有哪些其他可能性?

谢谢!

+0

好的,排序600K行将比排序13K行花费更多的时间。在合并甚至开始之前,这两种排序都需要完成。考虑在源代码中进行排序,因此您不需要在SSIS中进行排序步骤(这可能需要调整元数据,以便SSIS不会丢失源已经排序的信息);数据库服务器在这方面更有效率。事实上,您的流程看起来非常简单,以至于实际合并的所有内容都可以使用SQL完成。 –

回答

2

如果两个源表都在同一个服务器中,请不要使用这种方式。你应该简单地在SQL Server端写一个查询。

事情是这样的:

SELECT * 
FROM [Table A] 
INNER JOIN [Table B] ON [Table A].ID = [Table B].ID 
ORDER BY ... 

由于詹姆斯·塞拉说:When to use T-SQL or SSIS for ETL

  1. 性能 - 采用T-SQL,一切都在SQL引擎内处理。使用SSIS,您可以将所有数据带到SSIS内存空间并在那里进行操作。所以,如果速度是一个问题,通常T-SQL是一条路,特别是在处理大量记录时。 T-SQL中的JOIN语句就像在SSIS中使用查找任务一样快。另一个例子是T-SQL中的MERGE语句比SSIS中用于大型任务的SCD任务性能好得多
  2. 功能/功能 - 某些功能只能在T-SQL或SSIS中完成。您可以在SSIS中碎化文本,但不能在T-SQL中。例如,每行中字段数量不一致的文本文件只能在SSIS中完成。因此某些任务可能会迫使您使用其中一个或另一个
  3. 当前技能集 - IT部门的人员是否更熟悉SSIS或T-SQL?
  4. 易于开发/维护 - 当然,任何一个你最熟悉的将是最容易的,但如果你的技能都是相当均匀,然后SSIS通常更容易使用,因为它是图形化的,但有时你可以在T-SQL中快速开发。例如,不得不加入一堆表格需要SSIS中的一堆任务,在T-SQL中这是一个声明。所以它可能是更容易地创建捧场SSIS表的任务,但它会需要更长的时间来构建,然后写一个T-SQL语句
  5. 复杂性 - SSIS可以更复杂,因为你可能需要创建很多任务要完成你的目标,在T-SQL它可能只是一个说法,就像上面的例子中用于连接表
  6. 可扩展性 - SSIS具有更好的可扩展性,因为你可以创建一个使用C#脚本任务,可以做任何事情,特别是用于非数据库相关任务。 T-SQL是有限的,因为它仅用于数据库任务。SSIS也有日志记录,其中T-SQL不会
  7. 可能的解释/破坏更改 - 次要问题,但T-SQL始终删除每个版本中必须重写的功能
  8. 源和类型/体系结构目的地 - 如果您有多种类型的来源,SSIS会更好。例如,它适用于Oracle,XML,平面文件等.SSIS的设计从一开始就与其他源一起使用,其中T-SQL是为SQL Server设计的,它需要更多步骤才能访问其他源,这样做有其他限制
  9. 当地法规 - 是否有一些公司标准必须遵守,以限制您可以使用哪种工具?
2

我在加入或合并SSIS时遇到了问题。我将写入TSQL版本并执行SQL任务。它总是以这种方式跑得快得多。