Oracle データベースへのデータの効率的な一括挿入方法
Oracle データベースに複数行のデータを挿入するには、さまざまな方法があります。 MySQL で一般的に使用されるバッチ挿入メソッドは、Oracle では直接サポートされていません。
INSERT ALL ステートメントを使用します
Oracle では、バッチ挿入に INSERT ALL
ステートメントを使用できます。このステートメントには複数の INTO
句が含まれており、各句は挿入されるデータの行を表します。ステートメントは、挿入の終了を示す SELECT 1 FROM DUAL
で終わります。
<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>
Oracle 23c の簡略化された構文
Oracle 23c では、INSERT ALL
ステートメントの必要性を排除する簡素化された一括挿入構文が導入されています。次のようなカンマ区切りのリストを使用して、複数行のデータを挿入できます:
<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>
パフォーマンスに関する考慮事項
大量のデータの場合は、パフォーマンスの問題を考慮する必要があります。 Oracle 23c の新しい INSERT 構文は、INSERT ALL
よりもはるかに高速で、UNION ALL
メソッドと同等のパフォーマンスを備えています。ただし、一度に約 1000 行を超えるデータを挿入すると、解析時間が急激に増加します。
以上がOracle データベースに複数の行を効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。