oracle索引是加快查询速度,减少i/o操作的,但是如果索引无用的话
那他就是浪费资源的,尤其是在做DML操作时,这是 就需要我们查看
那些索引是无用的
相关视图:
user_indexes
user_ind_columns
v$object_usage
1. 查看表aa有哪些索引
SQL> select table_name,index_name from user_indexes
2 where table_name='AA';
TABLE_NAME INDEX_NAME
------------------------------ ----------------------------
AA IDX_FUNC
AA IDX_BITM
已用时间: 00: 00: 00.09
SQL>
2. 监控制定索引
SQL> alter index idx_func monitoring usage;
索引已更改。
已用时间: 00: 00: 00.39
SQL>select * from aa where rownum<100;
3. 查看索引是否被用
SQL> select * from v$object_usage;
未选定行
SQL>
4.查完索引是否被用后,记得要关闭索引监控
SQL> alter index idx_func nomonitoring usage;
5.监控数据库所有的索引
等数据库运的足够多的sql语句时,查询v$object_usage
打开所有索引监控脚本
spool run_monitoring.sql
select 'alter index ' ||owner||'.'|| index_name|| ' monitoring usage'
from dba_indexes;
where owner not in ('SYS','SYSTEM')
spool off
然后运行脚本 run_monitoring.sql
@run_monitoring.sql
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-662247/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-662247/
本文介绍了如何在Oracle数据库中优化和监控索引,通过查看特定表的索引使用情况,调整索引监控状态,以及利用v$object_usage视图检查索引的实际使用情况,以提高查询效率并减少I/O操作。
1256

被折叠的 条评论
为什么被折叠?



