繁体   English   中英

计算后更新数百万行

[英]Updating millions of Row after Calculation

我正在寻求有关我应该如何执行以下操作的建议:

  1. 我在 SQL 服务器中有一个表,大约有 3 -6 百万条记录和 51 列。
  2. 从数学计算中所取的 45 列数据中计算出一个值后,只需更新一列。
  3. 我已经通过 C# 完成了数学计算,并且我能够从中创建数据表 [有数百万条记录是]。

现在我想以最有效的方式将它们更新到数据库中。 我知道的选项是

  1. 对每条记录运行更新查询,因为我在数据读取器上使用循环来进行数学运算并创建 DataTable。
  2. 创建临时表并使用 SQLBulkCopy 复制数据,然后使用 MERGE 语句
  3. 虽然这很难做到,但是可以尝试在 SQL 中使用 Function 来完成所有数学运算,并且只需运行简单的更新,无需任何条件即可一次性全部更新。

我不确定哪种方法更快或更好。 任何的想法?

编辑:为什么我害怕使用存储过程

  1. 首先,我不知道我是怎么写的,我是新手。 虽然现在也许是时候去做了。
  2. 我的公式是取一列,对它们应用一个论坛,以及额外的常量值 [这也是列名称的一部分],然后取所有 45 列并应用另一个公式。
  3. 结果将存储在第 46 列中。

谢谢。

如果您有一个字段包含来自数据库中其他字段的计算,最好将其设为计算字段或通过触发器维护它,以便在任何来源更改数据时,都会保留计算。

您可以创建一个可以直接从 sql 调用的 .net 函数,这里是如何创建一个http://msdn.microsoft.com/en-us/library/w2kae45k%28v=vs.90%29.aspx的链接。 创建函数后,运行简单的更新语句

你不能在 c# 中创建一个标量值函数,并将它作为计算列的一部分调用吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM