2009-05-06 15 views
1

Oracle 9iをバックエンドとして使用してVisual Studio.NET 2008アプリケーションを開発しています。ストアドプロシージャの使用がインラインSQLより高速であることは事実ですか?これは私の共同プログラマーとの議論です。Oracleストアドプロシージャは、Microsoft.NETアプリケーションの行SQLよりも高速ですか?

OracleのODP.NET(Oracle Data Provider for .NET)を使用しています。

ありがとうございました。

答えて

7

私は「いいえ」または「そうは思わない」と答えるように誘惑されますが、この質問への答えを知る唯一の真の方法はに行き、自分で測定してください。。見つけ出すには、JetBrains dotTraceやTOAD独自のプロファイラなどのプロファイラを使用します。

他の回答はすべて投機的です。

2

ストアドプロシージャ(PL/SQLパッケージ)をデータベースとクライアント間で転送されるデータ量が少なくなるように構築する方が速くなります。

4

する必要があります。インラインSQLをデータベースに送信するとき、エンジンはそれを解析して実行する必要があります。ストアドプロシージャは、作成時に解析(コンパイル)されます。少なくともあなたは解析時間を得ています。

+2

アプリケーションから提出されたSQLは、バインド変数を使用することを願っているため、繰り返し実行するとハード解析されません。 PL/SQLではバインディング変数がバインドされていないよりもはるかに簡単であるため、バインディング変数がプロモートされるため、より良いプラクティスが促進されます。 –

3

ほとんどの場合、ストアドプロシージャが高速になることが期待されます。
これは主にコードによって異なります。
たとえば、データベースから結果セットを取得し、このデータを使用して他のクエリを実行すると、ネットワークトラフィックに大きなオーバーヘッドが生じます。これは、要求に対して単一の接続を使用するのを忘れた場合に特に当てはまります。
単一のストアドプロシージャを使用して、集計されたデータを返す方が効率的です(もちろん可能な場合)。

0

Jon Limjapは、「他のすべての回答は投機的です」と述べています。

この文には多くの真実があります。非常に多くの要因があります:DBサーバーはどのように設定されていますか?ネットワーク速度/信頼性はどうですか? SQLはどうですか? PL/SQLはどうですか?過去のプロジェクトでは、SQLやPL/SQLを本当に遅く書くことができました。あなたができるなら、両方を試してみてください。

関連する問題