在向大家詳細介紹Oracle建表之前,首先讓大家了解下Oracle索引,因為好的索引能幫助Oracle數據庫更好的檢索我們想要的信息。
Oracle索引邏輯上:
Single column 單行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based函數索引
Domain 域索引
Oracle索引物理上:
Partitioned 分區索引
NonPartitioned 非分區索引
B-tree:
Normal 正常型B樹
Rever Key 反轉型B樹
Bitmap 位圖索引
Oracle索引結構:
B-tree:
適合與大量的增、刪、改(OLTP);
不能用包含OR操作符的查詢;
適合高基數的列(唯一值多)
典型的樹狀結構;
每個結點都是數據塊;
大多都是物理上一層、兩層或三層不定,邏輯上三層;
葉子塊數據是排序的,從左向右遞增;
在分支塊和根塊中放的是索引的范圍;
Bitmap:
適合與決策支持系統;
做UPDATE代價非常高;
非常適合OR操作符的查詢;
基數比較少的時候才能建位圖索引;
樹型結構:
索引頭
開始ROWID,結束ROWID(先列出索引的最大范圍)
BITMAP
每一個BIT對應著一個ROWID,它的值是1還是0,如果是1,表示著BIT對應的ROWID有值;
B*tree索引的話通常在訪問小數據量的情況下比較適用,比如你訪問不超過表中數據的5%,當然這只是個相對的比率,適用於一般的情況。bitmap的話在數據倉庫中使用較多,用於低基數列,比如性別之類重復值很多的字段,基數越小越好。