更新数据库表ltrim rtrim太慢了

时间:2012-08-06 16:06:23

标签: database sybase

我有一张包含500000条记录的表格aprox。我需要更新字段,我正在使用以下说明:

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

但该指令需要一个小时的时间。我尝试过使用where子句:

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

但执行时间也很慢。

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

2 个答案:

答案 0 :(得分:0)

尝试仅为此更新临时创建non-clustered index而不是myField,并尝试使用此更新脚本。

答案 1 :(得分: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

我希望这会有所帮助 关心每个人。