2

手順では、多くのif-else条件を使用して列の値を決定する必要があります。スクリプトはで始まります

FOR rec IN(SELECT ....)LOOP Begin

そして、 recサブレコードが各反復で取得できる多くの異なる値を決定します。場合によっては、変数の割り当てが2つまたは3つしかない場合もあれば、別のプロシージャの実行やINSERT操作の実行が含まれる場合もあります。

これは、ループのSELECTステートメントの結果として多くのレコードが存在するパフォーマンスの観点からの意思決定に最適なアプローチですか、それともより良い代替手段がある可能性がありますか?この手順を作成する際にChain-of-responsibilityパターンを採用するとどうなりますか?このアプローチはパフォーマンスを向上させますか、それとも事態をさらに悪化させますか?

よろしく。

4

1 に答える 1

3

可能であれば、SQL内にとどまります。ボリュームが大きい場合は、PL / SQL側でシリアル化されるため、「if」は避けてください。可能であれば、SELECT内のCASEとして使用してください。たとえば、SQLの並列化の場合、異なる行の複数のプロセスで同時に処理できます。

お役に立てば幸い、イゴール

于 2012-05-05T17:11:56.073 に答える