在SQL数据库中重新计算大表

时间:2012-04-18 14:12:45

标签: c# .net sql-server-2008-r2

我们正在解决这个问题:

  • 我们在SQL Server 2008 R2(R2!)(数百万行)
  • 中有一张大表
  • 我们需要遍历此表,每行需要通过C#代码重新计算(因此表格是从C#应用程序加载的)

如果表现至关重要,怎么做?某种配料?

1 个答案:

答案 0 :(得分:2)

如果性能至关重要,请使用SQL CLR计算新值。你可以这样使用更新语句。 SQL CLR限制了您可以使用的代码,因此这可能不是一个简单的选择。

如果SQL CLR不是一个选项,还有另一种方法:

我假设有一个整数主键。我会这样做:

  • 请求一批行(10k左右)
  • 计算更新
  • 发送更新
  • 重复

诀窍是跟踪您已处理的行。保持处理的最后一行的ID值。请求这样的批次:

select top 10000 *
from T
where ID > @lastIDProcessed
order by ID

这将保证快速可靠的执行。