• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:性能問題について)

性能問題について

このQ&Aのポイント
  • set autotrace onで実行計画を見てみましたが、テーブルAが全走査されていました。そこでオプティマイザにヒントを与え、実行計画が改善されました。
  • テーブルAにインデックスがつけられ、テーブルBはフルスキャンになったことが性能の改善に繋がりました。
  • しかし、なぜこの変更によって性能が向上したのか原因がわかりません。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.1

SQL文もテーブル定義も記述されていないので詳しいことは言えませんが、ヒント設定前はルールベースでネステッドループ結合がされていますが、ヒント設定後はコストベースとなり、ソートマージ結合が行われているようです。 ソートマージ結合は、両テーブルの内容をソートして、その結果をマージする結合方法ですが、幸いテーブルAは実表を参照しなくてもよいようなSQLになっているようで、既にソートされているインデックスが利用され、実際のところテーブルBだけがソートの対象になるため速くなっているものと考えられます。 ただし、十分なメモリを搭載しているのであれば、ハッシュ結合の方が速い可能性があります。

関連するQ&A