マニュアルで統計情報を収集

マニュアルで統計情報を収集する方法です。
いつも忘れてしまうので、自分用のメモ…

テーブル単位

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秒もかからない。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です