HOME >> Tips >> Oracle

表やインデックスの統計情報を収集する(ANALYZEコマンド)

 
文書番号:20226




Oracle のオプティマイザの設定がコストベースの場合、表の統計情報から実行計画が立てられます。
統計情報が古くなるとデータの実態からかけ離れ、レスポンスが悪くなっていきます。
この統計情報を更新することで正しく実行計画をたてることができるようにします。

【実行手順(TABLE)】

  • 最後にアナライズが実行された日時を参照します。
    
    select table_name
          ,to_char(last_analyzed,'YYYY/MM/DD HH24:MI:SS') as last_analyzed
    from   user_tables
    order by table_name;
    
  • テーブルの全件から統計情報を収集します。
    
    analyze table テーブル名 compute statistics;
    
  • 10%のデータをサンプリングして統計情報を収集します。
    
    analyze table テーブル名 estimate statistics sample 10 percent;
    
  • テーブルの統計情報を削除します。
    
    analyze table テーブル名 delete statistics;
    

【実行手順(INDEX)】

  • 最後にアナライズが実行された日時を参照します。
    
    select index_name
          ,to_char(last_analyzed,'YYYY/MM/DD HH24:MI:SS') as last_analyzed
    from   user_indexes
    order by index_name;
    
  • インデックスの統計情報を収集します。
    
    analyze index インデックス名 validate structure;