08/08/05 23:05:55
すみません、報告が遅くなりまして。
原因がわかりました。
えー・・・お恥ずかしい話なのですが結論からいいますと、
最 初 か ら ル ー ル ベ ー ス じ ゃ な か っ た
ようです(汗
・・・といいますのも、前回の書き込みの時には関係ないと思っていたので書かなかったのですが、
実は2つのテーブル(A-売り上げ情報、B-店マスタ)をwhere条件でつなげていて
select col1,col2,・・・ from tableA,tableB
where ~
and tableA.colX = tableB.colY
という風になっています。
自分がアナライズをかけたのはtableAだけで、こちらしか見ていなかったのですが
自分がいじる前からtableBの統計情報が存在していたようです。
(誰がやったのか、インポート時?とかは全く不明)
それで、自分がアナライズををかけたことで、実行計画がかわってしまったようです。
そのうえ、当然tableAの統計情報を消しても、tableBの情報が残っているのでルールベースにはならない。
もとの実行計画にも戻らない。
なんでだー!・・・と自分が混乱していた。というわけです。
最初のほうは手探りでいろいろやっていたため、tableBの統計情報が存在することにすら気づいていなかったんですよね。
まぁそういうわけで、ルールベースに戻すことはできました。
あと、インデックスはヒントで使うようにしました。
大変お騒がせしました。
答えてくれたみんなありがとう!