[Oracle]インデックス(index)を取得、更新、リビルドする方法
1.指定テーブルのインデックス一覧を取得
SELECT
INDEX_NAME
FROM
USER_IND_COLUMNS
WHERE
TABLE_NAME = 'USER_TBL'
ORDER BY
INDEX_NAME;
SELECT
INDEX_NAME
FROM
USER_IND_COLUMNS
WHERE
TABLE_NAME = 'USER_TBL'
ORDER BY
INDEX_NAME;
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';
SELECT
NAME
, HEIGHT
, LF_ROWS
, DEL_LF_ROWS
FROM
INDEX_STATS
WHERE
NAME = 'PK_USER_TBL';
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;