14

パフォーマンスが優れている Oracle DBMS では、別の pl/sql ストアド プロシージャから Java ストアド プロシージャを呼び出すか、別の pl/sql ストアド プロシージャから pl/sql ストアド プロシージャを呼び出します。

ところで、pl/sql プロシージャに Java プロシージャを複数回呼び出すループがあります (つまり、私のコードは PL/SQL と Java ストアド プロシージャを切り替えています)。これによりパフォーマンスが低下しますか?

4

1 に答える 1

12

ある言語から別の言語への切り替えにはオーバーヘッドが伴います (小さいかもしれませんが、それでも残ります)。ループになっていると強調されます。

シンプルに保ち、PL/SQL に固執できる場合はそうしてください。

Tom Kyte (オラクル コーポレーションのバイス プレジデント兼グル) は、ここで繰り返すのにふさわしいマントラを持っています。

(参考:http ://tkyte.blogspot.com/2006/10/slow-by-slow.html )

  • 可能であれば、単一の SQL ステートメントで実行する必要があります。
  • 単一の SQL 文で実行できない場合は、PL/SQL で実行してください。
  • PL/SQL で実行できない場合は、Java ストアド プロシージャを試してください。
  • Java で実行できない場合は、C 外部プロシージャーで実行してください。
  • C の外部ルーチンでそれを行うことができない場合は、なぜそれを行う必要があるのか​​を真剣に考えてみてください…</li>
于 2011-08-19T15:41:30.107 に答える