2011-06-22 18 views
0

私は行の量を制限する方法があるかどうか疑問に思っています UPDATE文の影響を受けます....私はLIMIT文のようなものを使うことを考えていましたが、PERVASIVE、 ?は、UPDATE文の影響を受ける行の量を制限する手段ですか?

はあなたに感謝

これがうまくいくようだ
+1

更新プログラムのWHERE句で見つかった一致するデータの順序を制御しないため、これは実際にはあまり意味がありません。何百万行もの更新プログラムを実行しないようにしようとしていますか? – unpythonic

+0

@マークマンハイマーク、これはまさに問題です。私はかなり大きなテーブルに対してテストを行い、ちょうど取る時間を制限したいというUPDATE文を持っていますので、最初にテストすることができます... – seb

答えて

1

...

UPDATEテーブル名 SET ColumnNameに= ID INは値 (テーブル名FROM TOP 100 IDを選択CONDITION)

メイクTOPあなたの "限界"が何であれ100。その後、WHERE句を適切に更新するだけです。

1

アイデアは動作しますが、データによっては正確さや性能をテストする際にスキューが発生することがあります。また、書くのは難しいかもしれません。私はRANDOMベースの句を追加すると少し良い作品だと思います。

UPDATE t SET c = blah 
    WHERE (/* whatever bunch of stuff */) 
    AND Random()<0.01 /* 1 percent */ 

DBのランダムが0と1の間の値を与え、異なるランダム関数と密度で変更できる場合に機能します。

0

注意するだけであれば、更新する行を数えてみるのはなぜですか?カウントが十分に低い場合

select count(*) from MYTABLE WHERE ...some condition...; 

が、これは事実上の更新に&ペーストをカットされています。適切なように

update MYTABLE set col1 = val1, ... WHERE ...some condition...; 

は、スクリプト言語、PL/SQL、またはストアドプロシージャの中に入れてください。

関連する問題