[Oracle]インデックス(index)を取得、更新、リビルドする方法
1.指定テーブルのインデックス一覧を取得
SELECT INDEX_NAME FROM USER_IND_COLUMNS WHERE TABLE_NAME = 'USER_TBL' ORDER BY INDEX_NAME;
2.インデックスの統計情報を解析
ANALYZE INDEX PK_USER_TBL VALIDATE STRUCTURE;
3.インデックスの統計情報を更新
SELECT NAME , HEIGHT , LF_ROWS , DEL_LF_ROWS FROM INDEX_STATS WHERE NAME = 'PK_USER_TBL';
結果
NAME HEIGHT LF_ROWS DEL_LF_ROWS
PK_USER_TBL 1 13 1
height: インデックスの深さ
lf_rows: リーフ行の数
del_lf_rows: 削除されたリーフ行の数
4.インデックス再構築
ALTER INDEX PK_USER_TBL REBUILD;