0

次の動作を行う方法があるかどうかを確認するだけです。

現在、私はやっています

select * from table_1 t1  where function_call(t1.col1, t1.col2) <> 0;

関数 function_call を呼び出す理由は、関数には、アクセスできないテーブル table_2 があります。私がアクセスできる唯一の方法は、1 つのパッケージを介することです。

上記の動作を変更して、where 句で function_call を呼び出す代わりに from 句にテーブル情報を含める方法はありますか。

お気に入り 、

select * from table_1 t1, package_x.get_table_2() where t1.col1 = 1 and t1.col2 = 1 and t1.col3 = t2.col3
4

1 に答える 1

1

TABLE_1WHERE 句から関数を呼び出すと、 のすべての行に対して関数が 1 回呼び出され、 の完全なテーブル スキャンが行われる可能性が非常に高いため、パフォーマンスが低下する可能性があることに同意しTABLE_1ます。サイトでできることはいくつか考えられます。

  1. TABLE_1 への必要なレベルのアクセスを許可します。
  2. 表示できるデータを制限する TABLE_1 のビューを作成し、そのビューに適切なアクセスを許可するか、または
  3. 遅いアクセス時間に耐えてください。

共有してお楽しみください。

于 2012-09-04T11:28:39.220 に答える