C# 在SQL数据库中重新计算大表
我们正在解决这个问题:C# 在SQL数据库中重新计算大表,c#,.net,sql-server-2008-r2,C#,.net,Sql Server 2008 R2,我们正在解决这个问题: SQL Server 2008 R2(R2!)(数百万行)中有一个很大的表 我们需要遍历这个表,每一行都需要由Ccode重新计算(因此该表是从C应用程序加载的) 如果性能至关重要,如何做到这一点?某种批处理?如果性能至关重要,请使用SQL CLR计算新值。您可以这样使用update语句。SQL CLR对您可以使用的代码进行了限制,因此这可能不是一个容易的选择 如果SQL CLR不是选项,还有另一种方法: 我假设有一个整数主键。我会这样做: select top 100
- SQL Server 2008 R2(R2!)(数百万行)中有一个很大的表
- 我们需要遍历这个表,每一行都需要由
code重新计算(因此该表是从C
应用程序加载的)C
如果性能至关重要,如何做到这一点?某种批处理?如果性能至关重要,请使用SQL CLR计算新值。您可以这样使用update语句。SQL CLR对您可以使用的代码进行了限制,因此这可能不是一个容易的选择 如果SQL CLR不是选项,还有另一种方法: 我假设有一个整数主键。我会这样做:
select top 10000 *
from T
where ID > @lastIDProcessed
order by ID
- 请求一批行(10k左右)
- 计算更新
- 发送更新
- 重复
select top 10000 *
from T
where ID > @lastIDProcessed
order by ID
这将保证快速可靠的执行。请注意,CLR听起来很有趣。你能写一个小片段吗?但是我们的C代码非常复杂。是的,用SQL CLR发布一个小片段是不可能的;-)如果您的代码很复杂,我建议使用后一个选项。对。使用表值参数将它们发送到过程或内联SQL命令中。不要发布10k个人更新。使用TVP作为输入,在一个语句中发布它们。