我必须更新一个包含数百万条记录的表。现在我将要更新的所有记录的 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 个值,也会出现两个问题。首先,上面的代码需要很长时间才能执行(查询形成部分)。其次,当我在 DB 上执行查询时,它会给出 Timeout Expired 异常。有没有更好的方法来实现我想要的?
更新:第一个查询需要很长时间的问题已经通过使用 stringbuilder 解决了。但第二个问题仍然存在。如果我增加超时,那么我会得到 sql 的资源异常。