使っていない索引を調べる
システムによっては索引を無駄に作ってあって、一度も使用されたことがない索引がある場合もある。それを見つけるための手順をまとめておく。
- ALTER INDEX インデックス名 MONITORING USAGE で監視開始
- しばらく通常業務
- V$OBJECT_USAGE で結果を確認(USERDカラムがNOなら未使用)
- ALTER INDEX インデックス名 NOMONITORING USAGE で監視終了
これで調べることができるけど、1コマンド1索引(INDEX)しか調べられない。
面倒なので「ALTER INDEX インデックス名 MONITORING USAGE」を生成するスクリプトを作成。
- Cドライブ直下にALTER INDEXコマンドが記載されたファイルが生成されます。*1
- user_indexesを元に生成しているので、ログインユーザが作成したINDEXが対象です
- 監視終了コマンドを生成するには青時部分を「NOMONITORING」に書き換えてください。
set pages 0 set feed off set term off set lines 500 set trimspool on spool C:\monitoring_index.sql select 'ALTER INDEX '|| INDEX_NAME|| ' MONITORING USAGE;' from user_indexes; spool off set term on set feed on set pages 14 set lines 80