(摘抄)oracle index 索引

2021-10-01 06:41:16 字數 2576 閱讀 3323

小白開始學習索引之路

大表,返回的行數<5%

經常使用where子句查詢的列

離散度高的列

更新鍵值代價低

邏輯and,or 效率高

檢視索引在建在那錶那列:

唯一索引:唯一索引指鍵值不重複。

create unique index empno_idx on emp(empno) ;

drop index empno_idx;

一般索引:鍵值可以重複

create index empno_idex on emp(empno)

組合索引:繫結兩個或更多列的索引。

create index empno_idex on emp(empno,depno)

反向索引:為了避免平衡樹索引熱塊,比如emp表中員工號都是以7 開頭,這樣你建索引就會把很多資料分配到乙個索引塊裡,使用反向索引可以報資料庫分布均勻。例如表裡有 7788,7889,7666如果建一般索引這三條資料就會分配到乙個索引塊,如果建反向索引,8877,9887,6667這三個就會分配到三個索引塊裡。

create index mgr_idx on emp1(mgr) reverse;

函式索引:如果查詢是必須用這個函式,可以這麼建索引

create index fun_idx on emp1(lower(ename));

select * from empl where lower(ename)=『scott』;

壓縮索引

create index comp_idx on emp(sal) compress;

公升序降序索引

create index deptno_job_idx on emp(deptno desc,job asc);

由於對基礎表做dml操作,導致索引表塊的自動更改操作,尤其是delete操作,會引起index表的index_entries的邏輯刪除,注意只有當乙個索引塊中的全部index_entry都被刪除,才會把這個索引塊刪除,索引對基礎表的delete,insert,操作做會產生索引碎片問題。例如乙個index_entry對應行被刪除啦,但是還有其他的index_entry,這樣會導致這個索引塊不被刪除。這樣就會產生索引碎片。

在oracle文件裡並沒有清晰的給出索引碎片的量化標準,oracle官方建議通過seqment advisor(段顧問)解決表和索引的碎片問題,如果你想自行解決,可以通過檢視index_stats檢視,當以下三種情況之一發生時,說明積累的碎片應該整理(僅供參考)啦。

1.height>=4 這個是索引的高度

2.pct_used<50%

3.del_lf_rows/lf_rows>0.2

場景模擬:

對該錶進行刪除操作:

delete from t where rownum<800000

重新分析重新執行

analyze index ind_1 validate structure;

select name,height,pct_used,del_lf_rows/lf_rows from index_stats

結果

10g及其以後可以通過以下語句

alter index ind_l rebulid [online] [tablespace name]

alter

index ind_1 rebuild online;

analyze

index ind_1 validate structure;

select name,height,pct_used,del_lf_rows/lf_rows from index_stats

Oracle index 索引提示解析

使用 hints 時,在某些情況下,為了確保讓優化器產生最優的執行計畫,我們可能指定全套的 hints oracle 索引提示,oracle index 提示,oracle index tips oracle index 優化,oracle index 提示。指示優化器的方法與目標的 hints a...

Oracle Index 索引無效原因

最近遇到乙個sql語句的效能問題,修改功能之前的執行時間平均為0.3s,可是新增新功能後,時間達到了4 5s。雖然幾張表的資料量都比較大 都在百萬級以上 但是也都有正確建立索引,不知道到底慢在了 下面展開調查。經過幾次排除,把問題範圍縮小在索引上,首先在確定索引本身沒有問題的前提下,考慮索引有沒有被...

oracle index的5種使用模式

索引的使用對資料庫的效能有巨大的影響。共有五類不同的使用模式。1。index unique scan 效率最高,主鍵或唯一索引 2。index full scan 有順序的輸出,不能並行讀索引 3。index fast full scan 讀的最塊,可以並行訪問索引,但輸出不按順序 4。index ...