1

約500000レコードのテーブルがあります。フィールドを更新する必要があり、次の指示を使用しています。

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

しかし、この命令は実行に 1 時間かかります。私はwhere句の例を使ってみました:

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

しかし、実行時間も非常に遅いです。

何か案は?更新のパフォーマンスを向上させるにはどうすればよいですか? よろしく。

4

2 に答える 2

0

Ok。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 indexこの更新だけのために一時的にオーバーを作成して、myFieldこの更新スクリプトを試してみてください。

于 2012-08-06T16:51:20.397 に答える