MERGEステートメント
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c |その他| PL / SQL | SQL | RAC | WebLogic | Linux
ホーム “記事” 9i “ここ
MERGE
ステートメントは、条件付きで挿入または更新するためにOracle9iで導入されました。データの存在に応じて、「アップサート」とも呼ばれるプロセス。MERGE
ステートメントは、テーブルスキャンを削減し、必要に応じて操作を並行して実行できます。
- 構文
- パフォーマンス
関連記事。
- MERGEステートメント
- MERGEステートメントの機能強化Oracle Database 10g
構文
HR_RECORDS
テーブルのデータが
テーブル。
ソースはクエリにすることもできます。
パフォーマンス
MERGE
ステートメントは、以下の例に示すように、単一の行ではなく、データのセットをマージするように最適化されています。
次のテストテーブルを作成します。ソーステーブルには、
ビュー。宛先テーブルには行の約半分が含まれています。
次のコードは、4つのマージ操作のパフォーマンスを比較しています。 1つ目は、ストレートのMERGE
ステートメントを使用します。 2番目もMERGE
ステートメントを使用しますが、行ごとに使用します。 3つ目は更新を実行し、更新が0行に達すると、条件付きで行を挿入します。 4番目は行を挿入し、インデックス例外で値が重複して挿入が失敗した場合に更新を実行します。
出力は、ストレートのMERGE
ステートメントが注文であることを示しています。最も近いライバルよりも桁違いに速い。更新/挿入は、挿入/更新のほぼ2倍の速度で実行され、行ごとにMERGE
を実行します。
更新/挿入を比較するだけです。挿入/更新メソッドは分離しており、比較はテーブル内のデータによって異なることを覚えておく必要があります。ほとんどのデータがまだ存在しない場合は、挿入/更新アプローチの方が適している可能性があります。ほとんどのデータがすでに存在する場合は、更新/挿入のアプローチの方がおそらく優れています。よくわからない場合は、より明確なマージを使用してください。
ストレートのMERGE
ステートメントに加えて、DMLステートメントであるため高速です。サーバーが余分な負荷を処理できる場合は、並列で簡単に実行してパフォーマンスをさらに向上させることができます。
詳細については、以下を参照してください。
- MERGEステートメント
- Oracle Database10gでのMERGEステートメントの機能強化
- MERGE
これがお役に立てば幸いです。よろしくティム…
トップに戻る。