回避したいカーソルのパフォーマンスの問題があります。私が解決しようとしている問題は次のとおりです。メイン テーブルの各レコード (約 6000000) の列 (VARCHAR ) を (1 つの update ステートメントを使用して) 更新するには、別のカウンターを更新する必要がある UDF によって計算された結果を使用します。カウンターテーブル。
- 問題は、UDF が副作用であるため、Countertable を更新できないことです。- READONLY フラグのため、一時テーブルまたは変数テーブルも更新できません。- メイン テーブルで更新トリガーを使用しましたが、トリガーは、insert というテーブルに格納された単一の更新ステートメントによって 1 回起動されました。
私が選択した解決策は、次のように Cursor を使用することです。
- メイン テーブルからカーソルを作成します。
- 最初の行をフェッチする
- カウンターテーブルからカウンターを取得する
- カウンター++
- 結果、カウンターなどを計算するために PROC を呼び出す
- PROC からの結果でメイン テーブルを更新します。
- カウンターテーブルを更新する
- 別の行をフェッチする
しかし、約 125 時間では遅すぎると信じてください (まさか)。
誰でも私を助けることができますか?