SQLServer内の詳細テーブルからサマリーテーブルに大量の挿入を実行しています。私は現在、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
アドバイスありがとうございます。