天天看點

【索引】Oracle之不可見索引和虛拟索引的比對

【索引】Oracle之不可見索引和虛拟索引的比對

之前給大家分享過不可見索引和虛拟索引,今天給大家分享的是Oracle之不可見索引和虛拟索引的比對。

<b>比較項目</b><b></b>

<b>不可見索引(Invisible Indexes)</b><b></b>

<b>虛拟索引(Virtual Index)、無段索引</b><b></b>

<b>出現版本</b><b></b>

11g

9i

<b>有無索引段</b><b></b>

有索引段,占用一定的存儲空間

無索引段,不占用存儲空間

<b>是否可以通過ALTER直接切換其屬性</b><b></b>

可以通過ALTER直接修改索引是否可見: 

ALTER INDEX INDEX_NAME INVISIBLE; 

ALTER INDEX INDEX_NAME VISIBLE;

不能通過ALTER修改屬性,也不能通過ALTER重建虛拟索引

<b>視圖DBA_INDEXES是否可以查詢到</b><b></b>

<b>視圖DBA_OBJECTS是否可以查詢到</b><b></b>

<b>啟用參數</b><b></b>

OPTIMIZER_USE_INVISIBLE_INDEXES (預設為false)

_USE_NOSEGMENT_INDEXES(預設為false)

<b>建立文法</b><b></b>

CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN_NAME) INVISIBLE;

CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN_NAME) NOSEGMENT;

<b>查詢系統中存在的所有不可見或虛拟索引的SQL</b><b></b>

SELECT OWNER, INDEX_NAME FROM DBA_INDEXES WHERE VISIBILITY='INVISIBLE';

SELECT INDEX_OWNER, INDEX_NAME 

  FROM DBA_IND_COLUMNS 

WHERE INDEX_NAME NOT LIKE 'BIN$%' 

MINUS 

SELECT OWNER, INDEX_NAME 

  FROM DBA_INDEXES;

<b>作用</b><b></b>

當索引不可見時,優化程式生成的計劃不會使用該索引。如果未發現性能下降,則可以删除該索引。還可以建立最初不可見的索引,執行測試,然後确定是否使該索引可見。

模拟索引的存在而不用真實的建立一個完整索引。這允許開發者建立虛拟索引來檢視相關執行計劃而不用等到真實建立完索引才能檢視索引對執行計劃的影響,并且不會增加存儲空間的使用。

<b>共同點</b><b></b>

都可以通過參數在SESSION和SYSTEM級别進行設定

..........................................................................................................................................................................................................                        

● 本文作者:小麥苗,隻專注于資料庫的技術,更注重技術的運用

● QQ群:230161599 微信群:私聊

● 聯系我請加QQ好友(642808185),注明添加緣由

● 于 2016-08-27 15:00~ 2016-08-27 19:00 在中行完成

● 【版權所有,文章允許轉載,但須以連結方式注明源位址,否則追究法律責任】

..........................................................................................................................................................................................................

長按下圖識别二維碼或微信用戶端掃描下邊的二維碼來關注小麥苗的微信公衆号:xiaomaimiaolhr,學習最實用的資料庫技術。

【索引】Oracle之不可見索引和虛拟索引的比對