3

このビューをクエリすると、ビューが遅くなります。ただし、NVL機能を削除すると、高速に実行されます。

実行計画を確認しましたが、NVL 関数が使用されている場合、インデックスは使用されていません。NVL 関数を使用しない場合はインデックスです。インデックスをヒントとして指定しようとしましたが、役に立ちませんでした。実行中にヒントが考慮されるかどうかは不明です。

以下は、ビューとビューの作成に使用されるクエリです。

CREATE OR REPLACE FORCE VIEW  "test"(a,b)
select NVL(table1.a,table2.a) a,table2.b from table1 join table2 on table1.id=table2.id 

ビューで使用しているクエリは

select * from test where a='XYZ'

上記のクエリを高速に実行するにはどうすればよいですか?

4

1 に答える 1

1

これに対する答えがすでに得られているかどうかわからない-NVL(a)を使用して機能ベースのインデックスを使用する必要があります。デフォルトでは、Oracleはnull列のインデックスを作成しないため、NVLを使用してクエリを実行すると、全表スキャンが実行されます。

于 2012-10-29T12:12:17.930 に答える