批量更新巨大的表

时间:2011-05-24 10:52:32

标签: sql sql-server sql-update bulk

我的表有26列,有几千条记录。 有没有办法批量更新此表?

现在我只对每个需要更新的列进行标准更新。 E.g。

update mytbl
set col1 = replace(....)

update mytbl
set col1 = col1 + "xyz"

update mytbl
set col2 = "test..."

我知道,对于每条记录,上述语句将在转到下一列之前先更新所有记录的列。

我正在寻找“快速批量更新”,因为这需要太长时间。

由于

4 个答案:

答案 0 :(得分:1)

您可以使用此结构:

UPDATE myTable
SET col1 = REPLACE(col1.....),
    col2 = 'some value'

答案 1 :(得分:1)

1 - 几千条记录x 26个字段并不大:)

2 - 使用ck建议的多字段更新语法,或将其插入到可能更快的新表中:

SELECT (REPLACE(col1...)) as Col1,
       'Some Value' as Col2,
       ...
INTO MyNewTable
FROM MyOldTable

答案 2 :(得分:0)

这些建议对于更多的记录更有用,但无论如何都可能有所帮助: 1.按照ck

的建议使用多字段更新
  1. 如果可以在更新期间锁定表以进行独占访问。

  2. 禁用所有索引。更新完成后恢复它们。

答案 3 :(得分:0)

请注意以下几点。

  1. 您可以使用SQL事件探查器检查在更新过程中是否有任何触发器正在执行某些操作。

  2. 您可以禁用索引。立即运行测试,最后将其恢复。