2

手順では、多くのif-else条件を使用して列の値を決定する必要があります。このスクリプトは、LOOPがOracleプロシージャでif-elseが多すぎますか、パフォーマンスが良いか悪いですか?

を開始しますREC IN(SELECT ...)のため

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

これは、ループのSELECT文の結果として多くのレコードが存在するパフォーマンスの面からの意思決定のための最善の方法にアプローチするのか、またはより良い選択肢があるのでしょうか?この手順を書く際にChain of Responsibilityパターンを適用すればどうなるでしょうか?このアプローチはパフォーマンスを向上させるのか、それとももっと悪化させるのでしょうか?

よろしくお願いいたします。

答えて

3

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

は、それは、SQLに滞在する イゴール

+0

1良いアドバイスを役に立てば幸い – DCookie

関連する問題