• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オプティマイザはどちらのモードで判断しているか調べる方法を教えてください。)

オプティマイザのモード判断方法と設定場所

このQ&Aのポイント
  • オプティマイザのモードを判断する方法として、CBOやRBOの設定場所を調べることができます。
  • 実行されるSQLのテーブルやIndexのANALYZEの有無によって、自動的にCBOが採用される場合もありますが、ヒント文を記載しない限りはCBOが適用されると考えられます。
  • 具体的な設定場所はデータベースのパラメータファイルやセッションレベルの設定などに記述されています。

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

  • ベストアンサー
  • thatsthat
  • ベストアンサー率55% (15/27)
回答No.1

表面的な事しか知らないのですが・・・ 初期化パラメータoptimizer_modeがRULEであれば、 常にルールベースです。 optimizer_modeがCHOOSEで、かつ、統計情報があれば、 コストベースの最適化が行われますが、 統計情報がない場合はルールベースになります。 なので、optimizer_modeがCHOOSEならば、 「analyzeが行われていたら~」という解釈で良いと思います。

orazakkun
質問者

お礼

ご回答ありがとうございました。 初期化パラメータファイル(init.ora)を確認したのですが、 optimizer_modeのパラメータが存在しないのです。 この場合はどちらで動作するのでしょうか? お分かりでしたら教えてください。

その他の回答 (3)

  • thatsthat
  • ベストアンサー率55% (15/27)
回答No.4

テーブルごとです。 一度もanalyzeしていないテーブルや、統計情報を削除したテーブルは (CBOできないので)RBOになります。

orazakkun
質問者

お礼

ありがとうございました。助かりました。

回答No.3

オプティマイザモードのデフォルトは、CHOOSEです。

orazakkun
質問者

お礼

ありがとうございました。よくわかりました。 それでは以下の場合はどうなのでしょうか? 実行するSQLに関係するテーブルにはANALYZEをしていないのですが、他の関係ないテーブルに対しANALYZEをしている場合もCBOとなるのでしょうか? お分かりでしたら教えてください。

回答No.2

初期化パラメータで決まります。(オプティマイザモード) オプティマイザモードでchooseが設定されておいる場合に、1つでも統計情報が存在すれば、CBOになります。 全く統計情報が存在しないシステムの場合、chooseモードでも、RBOとなります。

orazakkun
質問者

お礼

回答ありがとうございました。 さっそく初期化パラメータ(init.ora)を確認したとこと なぜかoptimizer_modeのパラメータがみあたりません。 この場合どちらで動作するのでしょうか? ご存知でしたら教えてください。

関連するQ&A