程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 尋找沒有使用的索引

尋找沒有使用的索引

編輯:Oracle數據庫基礎

那些存在但是沒有使用的索引是以個導致DML語言執行效率低下的嚴重問題,所有的 SQL語句如:INSERTS、UPDATES、和DELETES當它們要更新表中含有很多索引的行時將運行得很慢。ORACLE專業人士看到一列應用到SQL查詢語句的WHERE語句時將會重新設置索引,這有可能使得SQL語句運行更快。ORACLE提供的索引功能可能會重新配置索引到這些表中的列,這種重新配置的索引將削弱裝載ORACLE自關聯表的執行效率。在ORACLE9i前,沒有辦法表示哪些SQL查詢語句沒有使用的索引。現在我們通過ORACLE9i提供的方法可以找到和刪除這些沒有使用的索引。Oracle9i提供一個工具讓你使用ALTER INDEX 命令來監控索引使用情況。你可以定位和查找那些沒有使用的索引然後從數據庫中刪除。

下面一段代碼將打開對系統中使用的索引的監控。

Set pages 999;

Set heading off;

Spool run_monitor.sql

Select

‘alter index ‘||owner||’.’||index_name||’ monitoring usage;’

from

dba_indexes

where

ower 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使用這個索引要多少時間,但是這個工具有利於來研究不使用的索引。

INDEX_NAME TABLE_NAME MON USED

--------------- ------------------- --------- ---------

CUSTOMER_LAST_NAME_IDX CUSTOMER YES NO

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved