1

user1、user2 の 2 人のユーザーがいます。

どちらも、manager1 などの他のユーザーによって作成された view1 などのビューで選択の許可が与えられています。

これで、user1 と user2 の両方が manager1 のビューでシノニムを作成したため、 を使用してクエリを実行する必要はなく、 を使用するmanager1.view_nameだけview nameです。

CREATE OR REPLACE SYNONYM user1.view_name1 FOR manager1.view_name1;

ここで私の質問は、同じクエリが user1 で実行されるとはるかに長い時間がかかるが、user2 で実行されると 1 秒もかからないということです。

キャッシングの問題を回避するために、さまざまな組み合わせとさまざまな実行順序を試しました。しかし無駄に。助けてください。

user1 で約 10 秒かかります。:(

4

1 に答える 1

1

同じ SQL ステートメント (まったく同じテキスト) が異なる実行計画を持つことができる理由はさまざまです。これは、Oracle のバグか、「環境」の違いのいずれかです。たとえば、プレースホルダーのさまざまなデータ型、さまざまな NLS_ パラメーター (並べ替え、大文字と小文字の区別)。

于 2013-03-04T12:04:39.777 に答える