重新计算 SQL 数据库中的大表
本文关键字:数据库 SQL 新计算 计算 | 更新日期: 2023-09-27 18:31:35
我们正在解决这个问题:
- 我们在
SQL Server 2008 R2
中有一个大表(R2!)(数百万行) - 我们需要遍历这个表,每一行都需要通过
C#
代码重新计算(因此表是从C#
应用程序加载的)
如果性能至关重要,该怎么做?某种批处理?
如果性能至关重要,请使用 SQL CLR 计算新值。您可以通过这种方式使用更新语句。SQL CLR 对可以使用的代码施加了限制,因此这可能不是一个简单的选择。
如果 SQL CLR 不是一个选项,还有另一种方法:
我假设有一个整数主键。我会这样做:
- 请求一批行(10k 左右)
- 计算更新
- 发送更新
- 重复
诀窍是跟踪您已经处理了哪些行。保持最后一行的 ID 值已处理。请求如下批次:
select top 10000 *
from T
where ID > @lastIDProcessed
order by ID
这将保证快速可靠的执行。