淺析Oracle數(shù)據(jù)庫索引分類匯總
在向大家詳細(xì)介紹Oracle建表之前,首先讓大家了解下Oracle索引,因?yàn)楹玫乃饕軒椭鶲racle數(shù)據(jù)庫更好的檢索我們想要的信息。
Oracle索引邏輯上:
Single column 單行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based函數(shù)索引
Domain 域索引
Oracle索引物理上:
Partitioned 分區(qū)索引
NonPartitioned 非分區(qū)索引
B-tree:
Normal 正常型B樹
Rever Key 反轉(zhuǎn)型B樹
Bitmap 位圖索引
Oracle索引結(jié)構(gòu):
B-tree:
適合與大量的增、刪、改(OLTP);
不能用包含OR操作符的查詢;
適合高基數(shù)的列(唯一值多)
典型的樹狀結(jié)構(gòu);
每個(gè)結(jié)點(diǎn)都是數(shù)據(jù)塊;
大多都是物理上一層、兩層或三層不定,邏輯上三層;
葉子塊數(shù)據(jù)是排序的,從左向右遞增;
在分支塊和根塊中放的是索引的范圍;
Bitmap:
適合與決策支持系統(tǒng);
做UPDATE代價(jià)非常高;
非常適合OR操作符的查詢;
基數(shù)比較少的時(shí)候才能建位圖索引;
樹型結(jié)構(gòu):
索引頭
開始ROWID,結(jié)束ROWID(先列出索引的最大范圍)
BITMAP
每一個(gè)BIT對(duì)應(yīng)著一個(gè)ROWID,它的值是1還是0,如果是1,表示著BIT對(duì)應(yīng)的ROWID有值;
B*tree索引的話通常在訪問小數(shù)據(jù)量的情況下比較適用,比如你訪問不超過表中數(shù)據(jù)的5%,當(dāng)然這只是個(gè)相對(duì)的比率,適用于一般的情況。bitmap的話在數(shù)據(jù)倉庫中使用較多,用于低基數(shù)列,比如性別之類重復(fù)值很多的字段,基數(shù)越小越好。
【編輯推薦】