0

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

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

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

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

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

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

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

谢谢。

4

3 回答 3

3

如果您有一个字段包含来自数据库中其他字段的计算,最好将其设为计算字段或通过触发器对其进行维护,以便无论何时从任何来源更改数据,计算都会得到维护。

于 2013-08-29T12:59:20.457 回答
0

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

于 2013-08-29T12:56:22.750 回答
0

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

于 2013-08-29T12:57:24.437 回答