私はc#コードから大量の挿入と更新を頻繁に行っていますが、できるだけ速く行う必要があります。このプロセスを高速化するためのすべての方法を見つけるのを手伝ってください。
- を使用してコマンドテキストを
StringBuilder
作成します。;
String.Format
またはを使用しないでくださいStringBuilder.AppendFormat
、それは複数のStringBuilder.Append
呼び出しよりも遅いです- 再利用
SqlCommand
してSqlConnection
- sを使用しないでください
SqlParameter
(バッチサイズを制限します) - 構文を使用する
insert into table values(..),values(..),values(..)
(ステートメントあたり1000行) - できるだけ少ないインデックスと制約を使用する
- 可能であれば単純な回復モデルを使用する
- ?
上記のリストを更新するのに役立つ質問があります
- コマンドあたり(1回の
ExecuteNonQuery()
呼び出しあたり)のステートメントの最適な数はいくつですか? - 挿入と更新を同じバッチに含めるのは良いですか、それとも別々に実行する方が良いですか?
私のデータはtcpによって受信されているので、ファイルまたは外部テーブルからのデータの読み取りを伴う一括挿入コマンドを提案しないでください。
ステートメントの挿入/更新レートは約10/3です。