web-dev-qa-db-ja.com

Oracleで2つのテーブルをマージする方法

25百万行の大きなテーブルが1つあり、500,000行の別のテーブルのデータを大きなテーブルにマージする必要があります。両方のテーブルの行には同じ列があり、キー列が存在するかどうかを確認する必要があります。その後、残りの列を更新します。それ以外の場合は、新しい行を挿入します。更新を行うのに最適な方法はどれですか。1)キー列に従って列を更新します。2)古い列を削除し、代わりに新しい列を挿入します。

2
alonk

これはMERGEで完全に実現できます。

MERGE INTO big_table B
USING (SELECT key_col, col1, col2 FROM small_table) S
ON (B.key_col = S.key_col)
WHEN MATCHED THEN UPDATE SET B.col1=S.col1, B.col2=S.col2
WHEN NOT MATCHED THEN INSERT (B.col1, B.col2)
VALUES (S.col2, S.col2)
/
4
J. Doe