selectに一括挿入する方法

小老鼠
リリース: 2024-05-10 00:36:20
オリジナル
1527 人が閲覧しました

バッチ挿入に INSERT INTO SELECT ステートメントを使用すると、大量のデータの挿入効率を効果的に向上させることができます。 具体的な手順は次のとおりです。 バッチ サイズを決定します。数千行が推奨されます。挿入するデータのサブセットを保存する一時テーブルを作成します。 INSERT INTO SELECT ステートメントを使用してソース テーブルから一時テーブルにデータを挿入し、LIMIT 句を使用して一度に挿入される行数を制限します。 INSERT INTO SELECT ステートメントを再度使用して、一時テーブルからターゲット テーブルにデータを挿入します。不要になった一時テーブルを削除します。

selectに一括挿入する方法

バッチ挿入のための INSERT INTO SELECT ステートメントの使用方法

あるテーブルから別のテーブルに大量のデータを挿入する必要がある場合は、INSERT INTO SELECT を使用します。バッチ挿入用のステートメント 挿入により効率が向上します。バッチ挿入は、大規模な挿入操作を小さなバッチに分割することによって実装され、それによってデータベース サーバーのストレスが軽減されます。 INSERT INTO SELECT 语句进行分批插入可以提高效率。分批插入通过将大型插入操作分解成较小的批次来实现,从而减少对数据库服务器的压力。

步骤:

  1. 确定批次大小: 选择一个合适的批次大小,既能充分利用数据库服务器的资源,又不占用过多内存。一个好的经验法则是将批次大小设置为几千行。
  2. 创建临时表: 创建一个临时表来存储要插入的数据的子集。临时表只在当前会话中存在,可用于将数据划分为批次。
  3. 使用 INSERT INTO SELECT 语句插入数据: 编写一个 INSERT INTO SELECT 语句,将数据从源表插入到临时表。使用 LIMIT 子句限制每次插入的行数,以创建一个批次。
<code class="sql">INSERT INTO #temp_table
SELECT TOP (@batch_size) *
FROM source_table
WHERE NOT EXISTS (SELECT 1 FROM destination_table WHERE id = source_table.id);</code>
ログイン後にコピー
  1. 从临时表插入到目标表: 再次使用 INSERT INTO SELECT 语句,将数据从临时表插入到目标表。
<code class="sql">INSERT INTO destination_table
SELECT * FROM #temp_table;</code>
ログイン後にコピー
  1. 删除临时表: 插入完成后,删除不再需要的临时表。
<code class="sql">DROP TABLE #temp_table;</code>
ログイン後にコピー

优点:

  • 提高插入性能
  • 减少对数据库服务器的压力
  • 便于控制批次大小

注意:

  • 使用 IDENTITY_INSERT
  • 手順:
    バッチ サイズを決定します:🎜メモリをあまり消費せずにデータベース サーバーのリソースを最大限に活用できる適切なバッチ サイズを選択します。経験則としては、バッチ サイズを数千行に設定することです。 🎜🎜🎜一時テーブルの作成: 🎜 挿入するデータのサブセットを保存するための一時テーブルを作成します。一時テーブルは現在のセッション内にのみ存在し、データをバッチに分割するために使用できます。 🎜🎜🎜 INSERT INTO SELECT ステートメントを使用してデータを挿入する: 🎜 INSERT INTO SELECT ステートメントを作成して、ソース テーブルから一時テーブルにデータを挿入します。 LIMIT 句を使用して、バッチを作成するために一度に挿入される行の数を制限します。 🎜rrreee
      🎜🎜一時テーブルからターゲット テーブルに挿入: 🎜 INSERT INTO SELECT ステートメントを再度使用して、一時テーブルからターゲット テーブルにデータを挿入します。 。 🎜
    rrreee
      🎜🎜一時テーブルの削除: 🎜 挿入が完了したら、不要になった一時テーブルを削除します。 🎜
    rrreee🎜🎜利点:🎜🎜
      🎜挿入パフォーマンスの向上🎜🎜データベースサーバーへの負荷の軽減🎜🎜バッチサイズの制御が簡単🎜🎜🎜🎜注:🎜🎜
        🎜を使用IDENTITY_INSERT オプションにより、主キーの競合が発生する可能性があります。 🎜🎜ソーステーブルとターゲットテーブルに互換性のあるスキーマがあることを確認してください。 🎜🎜挿入プロセスを監視してデータの整合性を確保します。 🎜🎜

    以上がselectに一括挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート