oracle 删掉索引,如何清除Oracle中无用索引
DML性能低下,其中最嚴重的原因之一是無用索引的存在。所有SQL的插入,更新和刪除操作在它們需要在每一行數據被改變時修改大量索引的時候會變得更慢。
許多Oracle 管理人員只要看見在一個SQL
查詢的WHERE語句出現了一列的話就會為它分配索引。雖然這個方法能夠讓SQL運行得更快速,但是基于功能的Oracle
索引使得數據庫管理人員有可能在數據表的行上過度分配索引。過度分配索引會嚴重影響關鍵Oracle 數據表的性能。
在Oracle9i出現以前,沒有辦法確定SQL查詢沒有使用的索引。讓我們看看Oracle9i提供了什么樣的方法讓你找到這些索引并刪除它們。
過程是相當簡單的。Oracle9i有一個工具能夠讓你使用ALTER
INDEX命令監視索引的使用。然后你可以查找這些沒有使用的索引并從數據庫里刪除它們。
下面是一段腳本,它能夠打開一個系統中所有索引的監視功能:
set pages 999;
set heading off;
spoolrun_monitor.sql
select
'alter index '||owner||'.'||index_name||'
monitoring usage;'
from
dba_indexes
where
owner not in
('SYS','SYSTEM','PERFSTAT');
spool off;
@run_monitor
你需要等待一段時間直到在數據庫上運行了足夠多的SQL語句以后,然后你就可以查詢新的V$OBJECT_USAGE視圖。
select
index_name,
table_name,
mon,
used
from
v$object_usage;
在V$OBJECT_USAGE有一列被稱作USED,它的值是YES或者NO。不幸的是,它不會告訴你Oracle使用了這個索引多少次,但是這個工具對于找出沒有使用的索引還是很有用的。
【轉載自?IT學習網?www.5axxw.com】
總結
以上是生活随笔為你收集整理的oracle 删掉索引,如何清除Oracle中无用索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 00012.02设计模式(模板设计模式的
- 下一篇: java到期日期_java 常用时间操作