備忘録

統計情報を取得してもSQLが遅い

この前、DBMS_STATS をしてもSQLが遅くて少したったら速くなったということがあった。
Oracle10gからデフォルトで22時に統計情報を取得してくれるようになったが、
それを待ったわけでなくなぜだろう?と思っていったん放置していた。

たまたま、DBMS_STATSパッケージの罠 を見て、とった統計情報が必ず読み込まれるわけでないそうだ。

exec dbms_stats.gather_table_stats('SCOTT', 'EMP');
ではだめで
exec dbms_stats.gather_table_stats('SCOTT', 'EMP', no_invalidate=>false);
こうしないとダメらしい。

マニュアル を見るとまさしくその通りのことが書いてあった。
DBMS_STATS.SET_DATABASE_PREFS でデフォルトを変更できるようだが、false がデフォルトでいいような気がする。
統計情報取るときって、メンテ中か空いている時間にすると思うしね。

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://ncdkayak.blog.fc2.com/tb.php/16-bcc85284
この記事にトラックバックする(FC2ブログユーザー)