3

我们正在解决这个问题:

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

如果性能至关重要,如何做到这一点?某种批处理?

4

1 回答 1

2

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

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

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

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

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

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

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

于 2012-04-18T14:18:11.877 回答