SQL Server的最佳插入/更新批次



我正在从C#代码中进行频繁的插入和更新,我需要尽快进行此操作,请帮助我找到所有加快此过程的方法。ol>

  • 使用StringBuilder构建命令文本,使用;
  • 单独的语句
  • 请勿使用String.FormatStringBuilder.AppendFormat,它慢于多个StringBuilder.Append调用
  • 重用SqlCommandSqlConnection
  • 不要使用SqlParameter S(限制批量尺寸)
  • 使用insert into table values(..),values(..),values(..)语法(每个语句1000行)
  • 尽可能少的索引和约束
  • 如果可能的话,请使用简单的恢复模型
  • 这是可以帮助更新上面列表的问题

    1. 每个命令的最佳语句数量是多少(每个ExecuteNonQuery()调用)?
    2. 在同一批处理中插入和更新是一件好事,还是最好单独执行它们?

    我的数据是由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命令合并数据。

    最新更新