我在数据仓库环境中有一个要求,对于一个现有的表(Say表“A”),表中有大约450列,表中有1亿条记录,需要添加另外50列,但是因为表格已经很大了和广泛的,源系统无法容纳它,我将接收和加载一个扩展表(Say表“B”)与50个新列,并在两个表中的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.
如果直接更新表A,添加索引将降低更新性能。我建议创建主键和所需索引,然后使用临时表更新记录,然后截断并加载表A.
简而言之,
希望这种方法应该有所帮助。如果这对您有用,请告诉我。
This article可以更好地理解你。