我在数据仓库环境中,并且有一个要求,即对于一个现有的表(说表“ A”),该表具有约450列且该表中有1亿条记录,则需要再添加50列,但是作为该表已经很大并且很宽,并且源系统无法容纳它,所以我将接收并加载带有50个新列的扩展表(说表“ B”),并且两个表中都有一个SurrogateKey,所以新表也是如此将拥有1亿条记录。但是51列。 表B中的SurrogateKey是Identity列,因此它本身会生成Key。
我需要代理键,因为它将用于优化报告层。
为了维护表A中的SurrogateKey,两个表都加载后,我将必须运行一个包含以下代码的过程来更新A中的SK:
Update A
SET SK=B.SK
from A JOIN B
ON A.c1=B.c1 AND
A.c2=B.c2 AND
A.c3=B.c3 AND
A.c4=B.c4
考虑到两个表上都没有PK或任何索引,建议添加PK或索引是什么,以便在更新表A以及连接A和B时获得最佳性能。 / p>
答案 0 :(得分:2)
如果直接更新表A,则添加索引会降低更新性能。 我建议创建主键和必需的索引,然后使用临时表更新记录,然后可以截断并加载表A。
简而言之,
希望这种方法会有所帮助。 让我知道这是否适合您。
答案 1 :(得分:0)
This article可以更好地向您解释。