我有两张桌子Person&拥有一对多关系的所有权(每个人拥有许多所有权)。主键是GUID类型的person_id。我正在开发SSIS包以将数据从两个表加载到目标。在目标表中,我想添加代理键,以便将来我的sql连接使用代理键而不是GUID(因为GUID很慢)。我做了以下任务
这个过程非常缓慢,因为表和包中都有数百万条记录需要在一周内运行两次。
这是在父子关系中插入代理键值的唯一方法吗?或者还有其他有效的方法。
的问候,
答案 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