マニュアルで統計情報を収集する方法です。
いつも忘れてしまうので、自分用のメモ…
テーブル単位
BEGIN DBMS_STATS.GATHER_TABLE_STATS ( OWNNAME => 'ユーザ名' ,TABNAME => 'テーブル名' ,METHOD_OPT => 'FOR ALL INDEXED' ,CASCADE => TRUE ); END;
スキーマ単位
BEGIN DBMS_STATS.GATHER_SCHEMA_STATS ( OWNNAME => 'ユーザ名' ,OPTIONS => 'GATHER' ); END;
order byについて
いくらインデックスを作っても、統計情報を最適化しても、ヒント分を与えても、order by で指定したカラムのインデックスが効かないことがある。その場合、無理やり検索条件に設定してみるとよい。
select from pinesys.実装情報 x where and 確認フラグ=1 ORDER BY x.登録日時 asc
登録日時でインデックスを作っているのに、インデックスが効かない。1分かかる。
select from pinesys.実装情報 x where x.登録日時 is not null and 確認フラグ=1 ORDER BY x.登録日時 asc
こうしたらインデックスが効いた。1秒もかからない。