2016-08-04 5 views
0

最近のインタビューで、インタビュー担当者は次のように質問しました。単純なSQL問合せと書かれたPL/SQLとのSQL問合せの違いは?

"単純なSQLクエリを作成するか、そのSQLクエリをストアドプロシージャとしてPL/SQLに書きますか?"

私の質問は、違いは何ですか?また、それぞれを使用する必要があるのはいつですか?

+0

Postgresで異なるキーワードを認識することができますか、ストアドプロシージャが何であるかを知っていればテストしている可能性があります。 –

答えて

2

SQLクエリは通常、PL/SQLクエリよりも高速であり、実行するエンジンを変更する必要はありません。

+0

お返事ありがとうございました –

+0

ストアプロシージャでSQLクエリを書くと、その実行に時間がかかります。単純なSQLクエリを実行するのに比べて –

+0

答えは "それに依存しています"、あなたの質問はあまりにも一般的です。 – pepper42

2

これを理解するには、コンテキスト切り替えについて知っておく必要があります。単純なSQLを記述すると、Oracle SQLエンジンのみが再生されます。しかし、PL/SQLにSQL文を書くと、SQLエンジンはPL/SQLエンジンにコンテキスト・スイッチを行い、文が実行されます。コンテキストが切り替わるほど、パフォーマンスが悪くなります。以下のリンクを確認してください。

http://www.oracle.com/technetwork/issue-archive/2015/15-jul/o45plsql-2543984.html

0

SQLエンジンは関係なく、ホスト言語のクエリを実行しますので、基本的には差がありません - それは気にすべてのためにCOBOLである可能性があります。

余分なコンポーネント(プロシージャを呼び出すとSQLを直接実行するのではなくSQLを実行する)にわずかなオーバーヘッドがありますが、ステップは通常マイクロ秒単位で測定できます。プロシージャが2つ以上の問合せ(たとえば2つの問合せ)を実行するとすぐに、プロシージャの利点が戻されます)。スタンドアロンSQLでは可能です。