【发布时间】:2014-03-06 08:00:12
【问题描述】:
较长的 SSIS 任务的一部分是读取 10 Mio。将数据行放入表“主干”并按两个不同的 id 对其进行排序以加入另一列。
原来排序 10 Mio。 rows 对于我们的服务器来说太多了,因此我需要一个自动拆分 10 Mio 的解决方案。表“主干”中的行分成多个部分。
目前我通过执行包的 SQL 语句选择 TOP 5 Mio 手动执行此操作,然后选择 BOTTOM 5 Mio。
有没有办法自动或完全不同地做到这一点?
【问题讨论】:
-
你在哪里进行排序。如果您使用的是 SSIS 排序任务选项,那么这很可能会导致内存压力,因为它是一个完整的内存操作,而不是直接插入 SQL 并在那里处理排序。
-
相关表有多大?您可以考虑查找而不是加入。
-
相关表包含大约 10 k 行并且还在增长。我将如何在 SSIS 中进行查找?我认为 Excel 中的“查找”作为 VLOOKUP 与 SSIS 中的 JOIN 相同。 SQL
-
10k 行,只有一列可以缓存而不会出现问题。我会使用查找:technet.microsoft.com/en-us/library/ms141821.aspx
-
您能否澄清“表干并按两个不同的 id 对其进行排序以加入另一列。”您是否对数据进行了预排序,以便可以将其加入 SSIS 包中?你到底在做什么?哪些部分在数据库中,哪些在 SSIS 中?