ホームページ > データベース > mysql チュートリアル > 複数の SQL Server テーブルに同時にデータを効率的に挿入するにはどうすればよいですか?

複数の SQL Server テーブルに同時にデータを効率的に挿入するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-04 05:01:40
オリジナル
395 人が閲覧しました

How to Efficiently Insert Data into Multiple SQL Server Tables Simultaneously?

複数の SQL Server テーブルへの同時挿入

複数のテーブルにデータを同時に挿入することは、特にテーブルに外部キー関係がある場合に困難になる可能性があります。 。一般的なアプローチは、INSERT-SELECT-INSERT メソッドを使用することです。このメソッドでは、最初のテーブルにデータを挿入し、主キーを取得して、そのキーを 2 番目のテーブルに挿入します。

ただし、この方法は非効率になる可能性があります。大規模な挿入用。このようなシナリオに対して、SQL Server は代替ソリューションを提供します。

insert into [table1] ([data])
output inserted.id, inserted.data into table2
select [data] from [external_table]
ログイン後にコピー

このクエリは、単一のトランザクションで両方のテーブルにデータを挿入します。 OUTPUT 句は、挿入された主キーとデータを最初のテーブルから取得し、2 番目のテーブルに挿入します。

例:

CREATE TABLE [table1] (
  [id] [int] IDENTITY(1,1) NOT NULL,
  [data1] [varchar](255) NOT NULL,
  CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ([id] ASC)
);

CREATE TABLE [table2] (
  [id] [int] IDENTITY(1,1) NOT NULL,
  [table1_id] [int] NOT NULL,
  [data2] [varchar](255) NOT NULL,
  CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED ([id] ASC)
);

INSERT INTO [table1] ([data1])
OUTPUT INSERTED.ID, INSERTED.DATA1 INTO [table2] ([table1_id], [data2])
SELECT [data1] FROM [external_table];
ログイン後にコピー

このクエリはデータを挿入します。 1 回の操作で外部テーブルから table1 と table2 の両方にコピーします。 table1 のデータは、table2 の外部キー関係を作成するために使用されます。

さまざまなデータ列の処理:

一部のシナリオでは、ソース内のデータ列と宛先テーブルは異なる場合があります。この場合、MERGE ステートメントを使用できます。

MERGE INTO [table1] AS t
USING [external_table] AS s
ON 1=0 -- modify this predicate as necessary
WHEN NOT MATCHED THEN INSERT (data)
VALUES (s.[col1])
OUTPUT INSERTED.ID, s.[col2] INTO [table2];
ログイン後にコピー

このクエリは、更新/挿入操作を実行し、まだ存在しない行を table1 に挿入し、既存の行を更新します。 OUTPUT 句は、挿入された主キーと対応するデータを外部テーブルから取得し、table2 に挿入します。

以上が複数の SQL Server テーブルに同時にデータを効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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