我正在从C#代码中进行频繁的插入和更新,我需要尽快进行此操作,请帮助我找到所有加快此过程的方法。ol>
StringBuilder
构建命令文本,使用;
String.Format
或StringBuilder.AppendFormat
,它慢于多个StringBuilder.Append
调用SqlCommand
和SqlConnection
SqlParameter
S(限制批量尺寸)insert into table values(..),values(..),values(..)
语法(每个语句1000行)这是可以帮助更新上面列表的问题
- 每个命令的最佳语句数量是多少(每个
ExecuteNonQuery()
调用)? - 在同一批处理中插入和更新是一件好事,还是最好单独执行它们?
我的数据是由TCP收到的,因此请不要建议任何涉及从文件或外部表读取数据的批量插入命令。
插入/更新语句率约为10/3。
使用表值参数。使用大量行时,它们可以很好地缩放,并且您可以获得接近BCP级别的性能。我在这里写了一个关于从C#方面使该过程非常简单的方法的博客。您需要知道的其他所有内容都在此处的MSDN网站上。您会得到 far 更好地做事的表现,而不是在普通的SQL批次上进行一些调整。
与sqlserver2008 TableParameters一样。请参阅本文(第四步)
http://www.altdevblogaday.com/2012/05/16/sql-server-high-performance-interts/
我将其与并行化插入过程相结合。认为这也有帮助,但必须检查; - )
在临时表中使用 SqlBulkCopy
,然后使用 MERGE
sql命令合并数据。