我经常从c#代码批量插入和更新,我需要尽快完成,请帮助我找到加速此过程的所有方法。
StringBuilder
构建命令文本,使用;
String.Format
或StringBuilder.AppendFormat
,它会比多次StringBuilder.Append
来电慢SqlCommand
和SqlConnection
SqlParameter
s(限制批量)insert into table values(..),values(..),values(..)
语法(每个语句1000行)以下是帮助更新上面列表的问题
ExecuteNonQuery()
次调用)是多少?我的数据正由tcp接收,因此请不要建议任何涉及从文件或外部表读取数据的批量插入命令。
插入/更新语句的速率约为10/3。
答案 0 :(得分:2)
使用表值参数。当使用大量行时,它们可以很好地扩展,并且您可以获得接近BCP级别的性能。我在博客上写了一篇关于从C#端here开始简化这个过程的方法。您需要知道的其他所有内容都在MSDN网站here上。您可以通过这种方式获得远更好的性能,而不是对正常的SQL批次进行一些调整。
答案 1 :(得分:1)
从SQLServer2008开始,TableParameters是最佳选择。见本文(第四步)
http://www.altdevblogaday.com/2012/05/16/sql-server-high-performance-inserts/
我将此与并行插入过程相结合。认为这也有帮助,但必须检查; - )
答案 2 :(得分:0)
将SqlBulkCopy
用于临时表,然后使用MERGE
SQL命令合并数据。