膨大なデータセットや頻繁な更新を扱う場合、データベース操作を最適化することが重要です。 C# でデータベースに複数の行を効率的に挿入することは、特にデータが Web ソースから受信され、セキュリティ目的でパラメータ化する必要がある場合に、重大な課題を引き起こします。
提供されるコードスニペットはループを利用して各データ要素に対して個別の挿入ステートメントを実行します:
foreach(string data in Scraper){ // ... Command.executeNonQuery(); conn.close(); }
ただし、この反復的なアプローチは非効率的であり、次のような問題が発生する可能性があります。
SQL Server 2008 以降でのデータ挿入をより高速かつ効率的に行うために、テーブル値パラメーターは魅力的なソリューションを提供します。ユーザー定義のテーブル タイプを定義し、ストアド プロシージャでそれを利用すると、1 回の操作で複数の行を挿入できます。
ステップ 1: ユーザー定義のテーブル タイプを作成する
CREATE TYPE MyTableType AS TABLE ( Col1 int, Col2 varchar(20) )
ステップ 2: テーブル値を使用してストアド プロシージャを作成するパラメータ
CREATE PROCEDURE MyProcedure ( @MyTable dbo.MyTableType READONLY -- NOTE: table valued parameters must be Readonly! ) AS INSERT INTO MyTable (Col1, Col2) SELECT Col1, Col2 FROM @MyTable
ステップ 3: C# からストアド プロシージャを実行する
DataTable dt = new DataTable(); // Fill data table with values... using (var con = new SqlConnection("ConnectionString")) { using(var cmd = new SqlCommand("MyProcedure", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@MyTable", SqlDbType.Structured).Value = dt; con.Open(); cmd.ExecuteNonQuery(); } }
以上がC# から複数のパラメーター化された行を SQL Server データベースに効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。