非常大的表的ssis查找转换

时间:2016-03-17 07:20:41

标签: ssis etl data-warehouse

我有两张桌子Person&拥有一对多关系的所有权(每个人拥有许多所有权)。主键是GUID类型的person_id。我正在开发SSIS包以将数据从两个表加载到目标。在目标表中,我想添加代理键,以便将来我的sql连接使用代理键而不是GUID(因为GUID很慢)。我做了以下任务

  • 在目标表中我创建了一个person表,其中包含一个bigint类型的另一列person_id_sk(标识列)。
  • 将数据加载到人
  • 同样创建了所有权表,其中包含一个bigint的另一个列person_id_sk
  • 将数据加载到“查找转换”的人。

这个过程非常缓慢,因为表和包中都有数百万条记录需要在一周内运行两次。

这是在父子关系中插入代理键值的唯一方法吗?或者还有其他有效的方法。

的问候,

1 个答案:

答案 0 :(得分:1)

SQL操作几乎肯定会比SSIS操作更快。在SSIS中加载Person数据,数据库引擎创建IDENTITY代理键。保留GUID以使其进入表格。在SSIS中加载所有权数据,但在此阶段不对代理键执行任何操作。

然后在SQL操作中更新子行FK,如下所示:

UPDATE o
SET person_id_sk=p.person_id_sk
FROM
Ownership o
INNER JOIN
Person p
ON o.GUID=p.GUID