oracle虛擬索引詳解

2021-06-20 12:46:58 字數 1493 閱讀 9918

dba在日常維護管理資料庫進行低效能sql分析時,有時候需要通過建立索引對sql進行優化,但有些時候我們建立的索引是否能用到?這個只能建立以後才能看出效果,但是在實際工作中,特別是對大表建立索引對系統效能有很大影響,因此我們不得不避開業務高峰時段,但是有沒有一種辦法建立索引而不影響效能呢?有,虛擬索引。

虛擬索引不是物理存在的,它並不會建立實際的索引段,只是在資料字典中加了乙個索引的記錄,使得優化器能夠意識到乙個索引的存在,從而判斷是否使用該索引作為訪問路徑。作用僅僅是為了dba作sql優化時使用,dba跟據虛擬索引的優化效果決定是否建立物理索引。

一、虛擬索引支援型別

虛擬索引支援b-tree索引和bit點陣圖索引,在cbo模式下oracle優化器會考慮虛擬索引,但是在rbo模式下需要新增hint才行,在10g以後使用rbo模式方法

alter

session

setoptimizer_mode

=rule;

二、虛擬索引建立語法

create index idx_wxw on t(object_id) nosegment;

alter

session

set "

_use_nosegment_indexes"=

true;

注意,建立虛擬索引後需要設定隱含引數"_use_nosegment_indexes"為true oracle才會選擇虛擬索引

三、虛擬索引特點

1.虛擬索引無法執行alter index選項

sql> alter

index

idx_wxw

rebuild

error

atline1:

ora-

08114

:can

notalter

afake

index

2. 使用**站特性的時候,虛擬索引必須顯式drop,才能建立同名的索引

sql>

create

index

idx_wxw

ontest

(name

)error

atline1:

ora-

00955

:name

isalready

used

byan

existing

object

3. 不能建立和虛擬索引同名的實際索引

4. 可以建立和虛擬索引包含相同列但不同名的實際索引

5. 使用**站特性的時候,虛擬索引必須顯式drop,或者在drop table後purge table後,才能建立同名的索引

6. 虛擬索引分析並且有效,但是資料字典裡查不到結果,估計是oracle內部臨時儲存了分析結果

oracle 索引詳解

oracle的索引 索引和對應的表應該位於不同的表空間中,oracle能夠並行讀取位於不同硬碟上的資料,可以避免產生i o衝突 b樹索引 在b樹的葉節點中儲存索引欄位的值與rowid。唯一索引和不唯一索引都只是針對b樹索引而言.oracle最多允許包含32個字段的復合索引 索引建立策略 1.匯入資料...

Oracle 分割槽索引詳解

oracle 分割槽索引詳解 table index create unique bitmap index schema.index name on schema.table name tbl alias col asc desc index clauseindex attribs index cl...

深入oracle分割槽索引的詳解

表可以按range hash list分割槽,表分割槽後,其上的索引和普通表上的索引有所不同,oracle對於分割槽表上的索引分為2類,即 區域性索引和全域性索引 下面分別對這2種索引的特點和侷限性做個總結。區域性索引local index 1.區域性索引一定是分割槽索引 分割槽鍵等同於表的分割槽鍵...