対象テーブルのインデックス一覧取得
select i.TABLE_OWNER,i.TABLE_NAME,i.OWNER,i.INDEX_NAME,i.LAST_ANALYZED,i.TABLESPACE_NAME
from dba_indexes i where i.TABLE_OWNER='SCOTT' and i.TABLE_NAME='EMP'
;
各インデックス毎にアナライズ
analyze index SCOTT.PK_EMP validate structure
;
アナライズ結果を出力。これはひとつずつしかできません。
SELECT
name
, height -- 深さ
, lf_rows -- リーフ行
, del_lf_rows -- 削除リーフ行数
, del_lf_rows / lf_rows as "断片率"
FROM index_stats i
WHERE name = 'PK_EMP'
;
-- インデックスのリビルド
-- onlineオプションはライセンス必要
alter index scott.PK_EMP rebuild online
;
-- SHRINK もありますが rebuildのほうお勧め
ALTER INDEX SCOTT.PK_EMP SHRINK SPACE
;