3

SQLエンジンとPL/SQLエンジン間のコンテキストの切り替えにより、SQL文で関数をコールする際にパフォーマンスに影響はありますか? それとも、潜在的な影響は呼び出された関数に依存していますか?

  1. 組み込み関数の呼び出し:
TABLE_NM から dbms_crypto.hash(utl_raw.cast_to_raw(COLUMN),1) を選択します。
  1. PL/SQL関数の呼び出し:
パッケージ PCK を次のように作成または置換します。
  function doSomething(val varchar2) return varchar2;
PCK を終了します。

TABLE_NM から PCK.doSomething(COLUMN) を選択

関数呼び出しによるパフォーマンスのオーバーヘッドはありますか? ありがとう。

4

1 に答える 1

2

組み込み関数の呼び出し:

場合によります。ただし、ほとんどのネイティブ SQL 関数組み込み関数は、 Oracle カーネルの単一モジュールとして低レベルの「C 言語」でコンパイルされます。たとえば、or関数は、2 つのエンジンが 1 つのモジュールにあると言ったように、2 つのエンジン間のコンテキスト スイッチを持ちません。CASEUPPER

まあ、いくつかの組み込み関数がありますが、例外などがあります。Thomas SYSDATEKyteここで美しく説明しています。USER

PL/SQL 関数の呼び出し

PL/SQL でのSQL 呼び出し、またはその逆、つまり SQL でのPL/SQL 呼び出しにはコンテキスト スイッチが必要です。SQL から PLSQL への呼び出しのオーバーヘッドがあります (「ヒット」は、SQL が PLSQL を呼び出す場合に最も顕著であり、SQL が PLSQL に埋め込まれている場合はそうではありません)。

于 2015-11-17T11:21:47.910 に答える