Oracle 对索引进行监控与分析
Oracle 对索引进行监控与分析
查看表索引信息 需要用到dba_indexes, dba_ind_columns,查看表索引列信息,包括复合索引的脚本:
- WITH nonformat AS
- (SELECT i.index_name,i.table_name,t.column_name,t.column_position,i.uniqueness,t.table_owner
- FROM dba_indexes i, dba_ind_columns t
- WHERE i.table_name = t.table_name
- AND i.table_owner = t.table_owner
- AND i.index_name = t.index_name
- AND i.table_name = upper('t')
- --AND i.table_owner = upper('scott')
- ORDER BY t.index_name,t.column_position
- )
- SELECT nt.index_name,
- nt.table_name,
- (SELECT wmsys.wm_concat(column_name)
- FROM nonformat
- WHERE nt.index_name = index_name) column_names,
- nt.uniqueness,
- nt.table_owner
- FROM nonformat nt
- GROUP BY nt.index_name, nt.table_name, nt.uniqueness, nt.table_owner
- ORDER BY nt.index_name
索引列column_names以,分隔,需要指定表名与表的所有者信息。
翻了几页书,做一下笔记哦!
发现多余的索引有两种方式
1.根据原理来判断
考虑复合索引,根据复合索引的前缀性与选择性,分析表字段的记录分布情况,对复合索引进行整合。
2.使用Oracle的监控特性
alter index <index_name> monitoring usage; --对index_name开启监控
alter index <index_name> nomonitoring usage; --对index_name取消监控
select * from v$object_usage; --查询索引是否被使用
|
评论暂时关闭