我正在执行大量从详细表到 SQL Server 中的汇总表的插入操作。我目前正在使用 LEFT OUTER JOIN 来确定明细表中的行在插入之前是否已存在于汇总表中,如下例所示:
INSERT INTO TableA
(columnA
,columnB
,columnC)
SELECT
b.columnA,
b.columnB,
b.columnC
FROM TableB b
LEFT OUTER JOIN TableA a
on a.columnA = b.columnA
WHERE
a.columnA IS NULL
我发现即使没有要插入的行,此方法也会花费大量时间,因为它必须比较所有行以确定已经存在的行。在这种情况下,我通常会考虑添加一个标志来TableB
说明已插入哪些行。
然而,有几种不同的场景TableB
可以插入一行,TableA
这需要几个标志,我不希望使用存储空间,因为TableB
它非常大并且越来越大。
感谢您的任何建议。