- 締切済み
統計情報取得
毎朝DBMS_STATS.GATHER_SCHEMA_STATSにて統計情報を取得しているのですが、ある時からあるテーブルをSELECTするとIndexを利用すれば早く検索できるのに全件検索するようになってしまいました。 突然このような現象におちいるのはよくあることなのでしょうか? また同様な事象が発生した方がいれば対応策など教えて下さい。 ちなみに、OSは Solaris9 で、Oracleのバージョンは 9i です。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tsuduki123
- ベストアンサー率32% (21/65)
# 9iでできたかちょっと微妙ですけど。。。 表の結合とかしているのが前提ですけど 実行計画でみたときに HASH JOINとかなっていませんか? コストベースの場合件数が多くなるとHASH JOINが選択される可能性があります。 コストベースだとFULLSCAN==NGというものでもないので難しいところです。 適切にINDEXが張ってあるならばNESTED LOOPにしてあげるのも よいかもしれませんね あとはパラレルに処理できるようにしてあげるか。。。
- taka451213
- ベストアンサー率47% (436/922)
こんばんは >あるテーブルをSELECTすると・・・ とあるので、チューニング対象のSQLは限られる・・・、と想像したのですが・・・? 数がありすぎるという事は、全てのSQLが対象という事ですか??? バージョンが9iなので、いっその事ルールベースで固定してしまえば済むのでは? まぁ、自分で言っておいてなんですが、あまりお勧めしません。 個別にチューニングしていくのが本来のアプローチかと・・・。
- taka451213
- ベストアンサー率47% (436/922)
こんにちは >突然このような現象におちいるのはよくあることなのでしょうか? まぁ、場合によるとしか・・・。 >Indexを利用すれば早く検索できるのに ヒント句で固定してしまっては? オプティマイザを信用しないという方針で・・・。
お礼
回答ありがとうございました。 かなり古いPro*Cで記述されたプログラムでSQL文を自動生成していて プログラム数もたくさんありヒント句で固定するのには少し難しい 状況でして…。 とりあえず毎日取得している統計情報をやめたら問題は解消したので それで一時処置としています。