1

Db trace には、長い時間がかかるクエリがあります。誰かがそれが何を意味するのか説明できますか?これは非常に一般的な Oracle クエリであり、私のカスタム テーブルには関係していないようです。

select condition from cdef$ where rowid=:1;

trc ファイル (DB トレース) の複数の場所で同じクエリが見つかり、そのうちの 1 つに膨大な時間が経過しています。では、そのような長い時間がかからないようにするための解決策は何でしょうか。11g版オラクルを使用しています。

4

1 に答える 1

3

そうです、これは Oracle の再帰 SQL の例であり、アプリケーション SQL をサポートするためにデータ ディクショナリに対して実行されるステートメントです。その特定のステートメントは、CHECK 制約の検索条件を取得するために Oracle が実行するクエリです。チェック制約を使用してテーブルに行を挿入または更新している場合は、多くのことがわかります。

実際のステートメントの実行に時間がかかりすぎないようにする必要があるため、パフォーマンスの問題の原因になることはほとんどありません。ハードコーディングされた値で多くの挿入ステートメントを実行していない限り。Oracle は、新しい挿入または更新ステートメントを解析するたびに、そのクエリを実行します。バインド変数を使用していない場合、コストが高くなります。

于 2013-01-06T16:53:42.937 に答える