dポイントプレゼントキャンペーン実施中!

毎朝DBMS_STATS.GATHER_SCHEMA_STATSにて統計情報を取得しているのですが、ある時からあるテーブルをSELECTするとIndexを利用すれば早く検索できるのに全件検索するようになってしまいました。

突然このような現象におちいるのはよくあることなのでしょうか?
また同様な事象が発生した方がいれば対応策など教えて下さい。

ちなみに、OSは Solaris9 で、Oracleのバージョンは 9i です。

A 回答 (3件)

# 9iでできたかちょっと微妙ですけど。

。。

表の結合とかしているのが前提ですけど
実行計画でみたときに HASH JOINとかなっていませんか?
コストベースの場合件数が多くなるとHASH JOINが選択される可能性があります。
コストベースだとFULLSCAN==NGというものでもないので難しいところです。

適切にINDEXが張ってあるならばNESTED LOOPにしてあげるのも
よいかもしれませんね
あとはパラレルに処理できるようにしてあげるか。。。
    • good
    • 0

こんばんは



>あるテーブルをSELECTすると・・・
とあるので、チューニング対象のSQLは限られる・・・、と想像したのですが・・・?
数がありすぎるという事は、全てのSQLが対象という事ですか???

バージョンが9iなので、いっその事ルールベースで固定してしまえば済むのでは?
まぁ、自分で言っておいてなんですが、あまりお勧めしません。
個別にチューニングしていくのが本来のアプローチかと・・・。
    • good
    • 0

こんにちは



>突然このような現象におちいるのはよくあることなのでしょうか?
まぁ、場合によるとしか・・・。

>Indexを利用すれば早く検索できるのに
ヒント句で固定してしまっては?
オプティマイザを信用しないという方針で・・・。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

かなり古いPro*Cで記述されたプログラムでSQL文を自動生成していて
プログラム数もたくさんありヒント句で固定するのには少し難しい
状況でして…。

とりあえず毎日取得している統計情報をやめたら問題は解消したので
それで一時処置としています。

お礼日時:2010/04/18 20:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す