有一张表T1,曾经做过备份,T2为历史数据,T1相对T2有增量数据。
现在想把T1对T2做增量抽取。
select * INTO T2 from T1
where not exists (select ID from T2 c where T2.ID=T1.ID)
但是这个增量比较有几十万条,为提高效率,希望能做个批量插入,比如1000条commit一次,是否利用游标提高效率呢?请大侠帮忙想一下,谢谢。
------解决思路----------------------
WHILE @@ROWCOUNT>0
BEGIN
INSERT INTO T2
SELECT TOP 1000 * FROM T1
WHERE NOT EXISTS(SELECT ID FROM T2 C WHERE C.ID=T1.ID)
END
------解决思路----------------------
如果t1是自增ID,完全可以用下面的方式。
DECLARE @maxID int
SELECT @maxID = ISNULL(MAX(ID),0)
FROM T2
INSERT INTO T2
SELECT *
FROM T1
WHERE ID > @maxID