OracleはMicrosoft.NETアプリケーションの行SQLよりもストアドプロシージャが高速ですか?
-
06-07-2019 - |
質問
Oracle 9iをバックエンドとして使用して、Visual Studio.NET 2008アプリケーションを開発しています。ストアドプロシージャの使用がインラインSQLよりも速いというのは本当ですか?これは私のプログラマーとの議論です。
OracleのODP.NET(Oracle Data Provider for .NET)を使用しています。
ありがとう。
解決
「いいえ」と答えたいと思っていますが、または「そうは思わない」、この質問に対する答えを知る唯一の本当の方法は、自分で行って測定することです。 JetBrains dotTraceなどのプロファイラーとTOAD独自のプロファイラーを使用して調べてください。
その他の答えはすべて投機的です。
他のヒント
あるべきです。インラインSQLをデータベースに送信する場合、エンジンはそれを解析して実行する必要があります。ストアドプロシージャは、作成時に解析(およびコンパイル)されています。したがって、少なくとも解析時間は短縮されます。
ストアドプロシージャは、ほとんどすべてのケースで高速になると予想されます。
ただし、主にコードに依存します。
たとえば、データベースから結果セットを取得し、このデータを使用して他のクエリを実行すると、ネットワークトラフィックに多くのオーバーヘッドが発生します。これは、リクエストに単一の接続を使用することを忘れた場合に特に当てはまります。
その場合、単一のストアドプロシージャを使用して集計データを返す方が効率的です(もちろん可能です)。
データベースとクライアント間で転送されるデータが少なくなるようにストアドプロシージャ(PL / SQLパッケージ)を構築すると、高速になります。
Jon Limjap は次のように述べています。「他のすべての答えは投機的です」
この声明には多くの真実があります。非常に多くの要因があります:DBサーバーはどのように設定されていますか?ネットワークの速度/信頼性はどうですか? SQLはどうですか? PL / SQLはどうですか?必要に応じて、本当に遅いSQLやPL / SQLを書くこともできます(そして、過去のプロジェクトでうっかりしてしまいました!)。可能であれば、両方を試してください。