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

本文关键字:数据库 SQL 新计算 计算 | 更新日期: 2023-09-27 18:31:35

我们正在解决这个问题:

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

如果性能至关重要,该怎么做?某种批处理?

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

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

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

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

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

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

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

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