淺析Oracle數(shù)據(jù)庫索引分類匯總
在向大家詳細(xì)介紹Oracle建表之前,首先讓大家了解下Oracle索引,因為好的索引能幫助Oracle數(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);
每個結(jié)點都是數(shù)據(jù)塊;
大多都是物理上一層、兩層或三層不定,邏輯上三層;
葉子塊數(shù)據(jù)是排序的,從左向右遞增;
在分支塊和根塊中放的是索引的范圍;
Bitmap:
適合與決策支持系統(tǒng);
做UPDATE代價非常高;
非常適合OR操作符的查詢;
基數(shù)比較少的時候才能建位圖索引;
樹型結(jié)構(gòu):
索引頭
開始ROWID,結(jié)束ROWID(先列出索引的最大范圍)
BITMAP
每一個BIT對應(yīng)著一個ROWID,它的值是1還是0,如果是1,表示著BIT對應(yīng)的ROWID有值;
B*tree索引的話通常在訪問小數(shù)據(jù)量的情況下比較適用,比如你訪問不超過表中數(shù)據(jù)的5%,當(dāng)然這只是個相對的比率,適用于一般的情況。bitmap的話在數(shù)據(jù)倉庫中使用較多,用于低基數(shù)列,比如性別之類重復(fù)值很多的字段,基數(shù)越小越好。
【編輯推薦】