SQL表增量更新的性能 - 不同的方法

时间:2015-02-03 16:18:47

标签: sql join insert sql-server-2012

我想只使用table2中的新记录对table1进行增量更新。我正在寻找最快的方式。假设id是唯一整数,这三种方法中哪一种最快?如果您可以提出任何其他方法,请分享。

解决方案1。

INSERT INTO table1 
SELECT * FROM table2 
WHERE NOT EXISTS 
    (SELECT 1 FROM table1 
    WHERE table2.id = table1.id)

解决方案2.

INSERT INTO table1 
SELECT table1.* FROM table1 
LEFT OUTER JOIN table2
    ON table1.id = table2.id
    WHERE table2.id IS NULL

解决方案3。

INSERT INTO table1 
SELECT * FROM table2 
    WHERE table2.id > (SELECT MAX([table1.id]) FROM table1)

2 个答案:

答案 0 :(得分:0)

第三种解决方案比前两种解决方案无比快。不过要小心。它可能会返回与解决方案1和解决方案2不同的结果。

如果您想使用第3个解决方案,请确保id中的新table2总是比旧版本更高。您可以在两个表格中检查记录编号。我还建议在table1中索引ID。

答案 1 :(得分:-1)

insert into table1 
select table2.* from from table2 left outer join table1 on table2.id = table1.id
where table1.id is null