何百万ものレコードを含むテーブルを更新する必要があります。現在、更新するすべてのレコードの ID をリストに保存しています。クエリは、次のように実用的に生成されます。
string queryPart="";
foreach (int id in transactionsToUpdate.ToList())
{
queryPart+="TransactionID="+id;
queryPart+=" OR ";
}
queryPart += "1=0";
string query = @"UPDATE dbo.OutgoingQueue SET Status='C' WHERE "+queryPart;
現在、リストに 100,000 個の値があっても、2 つの問題が発生します。まず、上記のコードは実行に時間がかかります (クエリ形成部分)。次に、DB でクエリを実行すると、Timeout Expired 例外が発生します。私が望むものを達成するためのより良い方法はありますか?
UPDATE : クエリの作成に時間がかかるという最初の問題は、stringbuilder を使用することで解決されました。しかし、2 つ目の問題はまだ残っています。タイムアウトを増やすと、sql out of resource 例外が発生します。