1

我有一张大约有 500000 条记录的表。我需要更新这些字段,并且我正在使用以下说明:

update myTable set myField = ltrim(rtrim(myField))

但是该指令需要一个小时才能执行。我试过使用 where 子句 ex:

update myTable set myField = ltrim(rtrim(myField)) where myPrimaryKey >= 0 and myPrimaryKey <= 50000

但是执行时间也很慢。

有任何想法吗?如何提高更新的性能?问候。

4

2 回答 2

0

好的。我使用 CURSOR 减少了时间。

DECLARE cursor_prueba CURSOR FOR
select A, B, C from MyTable order by A
' A is PrimaryKey

OPEN cursor_prueba
FETCH cursor_prueba INTO @varA, @varB, @varC

WHILE @@FETCH_STATUS = 0
BEGIN
    update MyTable set B = ltrim(rtrim(B)), C = ltrim(rtrim(C)) where A = @varA

    FETCH cursor_prueba INTO @varA, @varB, @varC
END

CLOSE cursor_prueba
DEALLOCATE cursor_prueba

我希望这有帮助。
问候大家。

于 2012-08-06T21:55:26.370 回答
0

尝试单独为此更新临时创建一个non-clustered indexover并尝试此更新脚本。myField

于 2012-08-06T16:51:20.397 回答