• ベストアンサー

コストベースについて

データ量を基に最適な実行計画を立てることができるとありますが、具体的に実行計画を立てる場合、コストベースの場合、どのようなメリットがあるのでしょうか? また、今回の現場ではデータ量は各テーブル100万~800万くらいですが、コストベースに切り替えただけでは特に速くなったりはしないですよね? どなたかアドバイスお願いします。

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

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

まず、Oracle 8i以降で追加された検索パスはコストベースでしか利用できません。ハッシュ結合、スター結合、INリストイテレータなどが該当します。あと、Oracleが勝手に適切なSQL文に書き換えてから実行してくれるので、最適なSQL文を書くための知識がそれほどなくても高速に検索できます。 欠点としては定期的なANALYZEが行われていないととんでもないパスを選択する可能性がある(OUTLINEを作成しない限り、実行計画が固定化されない)、新機能を利用する分だけ不具合が多いと言ったところでしょうか。

toshi_200578
質問者

お礼

ANALYZEを行わないといけないのですね。 現場ではおそらく上記のような考慮は入っていないと思います。 ありがとうございました。 参考にします。

その他の回答 (1)

  • sapporo30
  • ベストアンサー率33% (905/2715)
回答No.1

勝手にコスト計算を行って、 実行計画を決めてくれる。 INDEXを使用した検索だけるのであれば、 早くなることはほとんどないでしょう。 逆に、統計情報にばらつきがあったり 統計情報が古かったら、コスト計算が 不正確で、変なアクセスパスを採用 するので、遅くなります。 INDEXがないような項目の検索で 検索項目が決まっていないような 検索であれば、あるていど有効に機能します。 ただ、10g からは、CBOだけになるので、 コストベースオプティマイザが必須になります。

toshi_200578
質問者

補足

回答ありがとうございます。 ということは将来的にもコストベースで運用していたほうがよいですね。 そのためには統計情報を最新にする必要があるのでしょうが、統計情報を更新するためにはどのような注意点が必要でしょうか? 一部でもよいのでアドバイスお願いします。

関連するQ&A