數據庫使用久了會發現表示有很多索引,嚴重可能影響dml操作,因此可以使用索引監控發現那些索引不使用,進行刪除:
1.監控索引:
alter index index_name_xxxx MONITORING USAGE;
取消索引監控:
alter index index_name_xxxx NOMONITORING USAGE;
可以根據表名字批量生產監控索引的語句:
select 'alter index ' || index_name || ' MONITORING USAGE;' from user_indexes where table_name = 'table_name_xxxx';
或者直接查詢獲取索引名字:
select index_name from user_indexes ;
2.查看索引監控情況:
SELECT * FROM V$OBJECT_USAGE;
INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
IDX_STATUS T_APP_USER_N YES NO 10/01/2018 10:24:43
正常可以監控一個星期或者更久,自己根據業務或者平時的sql決定:
可以先設置索引invisible:
alter index IDX_STATUS invisible;
如果需要使用,可以打開visible
alter index IDX_STATUS visible;
3.觀察一段時間沒有問題可以刪除,建議刪除之前可以備份下創建索引的語句:
drop index IDX_STATUS;