将旧表中的数据插入新表,新表中的ID,并更新旧表中的相应行。最优化的方式?

时间:2012-01-25 06:09:41

标签: sql sql-server

我有两张桌子。 OLDTABLE和NEWTABLE。 我需要将一些数据从oldtable插入到newtable,并从新表中获取ID,并在相应行的oldtable中更新。 newtable ID在oldtable中具有单独的列,默认为null。

一种方法是在新表中插入数据时从两个表中获取ID,然后在oldtable中查找数据并更新它。这是更简单的方法。

有人可以提出一些优化方法吗?

1 个答案:

答案 0 :(得分:1)

-- declare a helper table variable
DECLARE @TableOfID TABLE (OldID INT, NewID INT)

MERGE newTable as target
USING    (
    SELECT *
    FROM    oldtable
    ) AS source
ON     (1=0) 
WHEN NOT MATCHED BY TARGET THEN
insert  ( OldID, Col1, Col2, ..., ColN)    
VALUES (ID, Col1, Col2, .., ColN)
OUTPUT Inserted.ID, Inserted.OldID INTO @TableOfID(NewID, OldID);