Oracle の複数行挿入の最適化
このガイドでは、MySQL で使用されるアプローチよりも優れたアプローチに焦点を当て、Oracle データベースに複数の行を挿入する効率的な方法について詳しく説明します。
INSERT ALL
ステートメント
Oracle の INSERT ALL
構文は、複数行の挿入に対する堅牢なソリューションを提供します。
<code class="language-sql">INSERT ALL INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3') INTO t (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3') INTO t (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3') . . . SELECT 1 FROM DUAL;</code>
こちら:
t
はターゲットテーブルを指定します。col1
、col2
、col3
はテーブルの列を表します。val1_1
から val3_3
は、挿入される値です。DUAL
は、単一行のクエリに使用される組み込みの仮想テーブルです。簡略化された構文 (Oracle 23c 以降)
Oracle 23c では、より合理化された構文が導入されました。
<code class="language-sql">INSERT INTO t(col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3'), ('val2_1', 'val2_2', 'val2_3'), ('val3_1', 'val3_2', 'val3_3');</code>
このアプローチでは、INSERT ALL
と比較して簡潔さとパフォーマンスが向上します。
パフォーマンスのベストプラクティス
新しい構文は一般に一括挿入に優れていますが、Oracle 23c の改善された構文であっても、解析のオーバーヘッドを最小限に抑え、効率を最大限に高めるために、挿入ステートメントごとの行数を制限することを検討してください。 非常に大規模なデータセットの場合は、SQL*Loader などの他の手法を使用して調査してください。
以上がOracle データベースで複数行の挿入を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。