【发布时间】:2014-10-19 23:23:11
【问题描述】:
我在 SQL Server 2012 中有一个数据库,想更新其中的一个表。
我的表有三列,第一列的类型是nchar(24)。它充满了数十亿行。另外两列来自同一类型,但此时它们为null(空)。
我需要从第一列读取数据,并根据这些信息进行一些计算。我计算的结果是两个字符串,这两个字符串就是我要插入两个空列的数据。
我的问题是从表的第一列读取信息并更新第二列和第三列的最快方法是什么。
逐步阅读和更新?读取几行,进行计算,在读取接下来的几行时更新行?
对于数十亿行,性能是这里唯一重要的事情。
如果您需要更多信息,请告诉我!
编辑 1: 我的计算不能用 SQL 表达。 由于 SQL 服务器在本地计算机上,因此我们不必担心吞吐量。一次计算大约需要 0.02154 秒,我总共有 2.809.475.760 行,这大约是 280 GB 的数据。
【问题讨论】:
-
计算可以用SQL表达吗?如果是这种情况,您只需要一个 UPDATE 语句。
UPDATE MyTable SET Col2 = substring(Col1,1,12), Col3 = substring(Col1,12,12)之类的东西(我以substring为例)。 -
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
单条SQL最快。
-
计算不能用SQL表示。
-
因为这是一次性的事情......无论您在哪里进行计算,都包括所有三列并将数据转储到 .CSV 导出中。然后 TRUNCATE 现有表并使用 SSIS 将 .CSV 导入表中。
标签: c# sql sql-server performance stored-procedures