古詩詞大全網 - 成語用法 - Oracle索引的索引的分類

Oracle索引的索引的分類

在關系數據庫中,每壹行都由壹個行唯壹標識RowID。RowID包括該行所在的文件、在文件中的塊數和塊中的行號。索引中包含壹個索引條目,每壹個索引條目都有壹個鍵值和壹個RowID,其中鍵值可以是壹列或者多列的組合。  (壹)索引按存儲方法分類,可以分為2類:B*樹索引和位圖索引。  (1)B*樹索引的存儲結構類似書的索引結構,有分支和葉兩種類型的存儲數據塊,分支塊相當於書的大目錄,葉塊相當於索引到的具體的書頁。Oracle用B*樹機制存儲索引條目,以保證用最短路徑訪問鍵值。默認情況下大多使用B*樹索引,該索引就是通常所見的唯壹索引、逆序索引。  (2)位圖索引存儲主要用於節省空間,減少oracle對數據塊的訪問。它采用位圖偏移方式來與表的行ID號對應,采用位圖索引壹般是重復值太多的表字段。位圖索引之所以在實際密集型OLTP(聯機事物處理)中用的比較少,是因為OLTP會對表進行大量的刪除、修改、新建操作。Oracle每次進行操作都會對要操作的數據塊加鎖。以防止多人操作容易產生的數據庫鎖等待甚至死鎖現象。在OLAP(聯機分析處理)中應用位圖有優勢,因為OLAP中大部分是對數據庫的查詢操作,而且壹般采用數據倉庫技術,所以大量數據采用位圖索引節省空間比較明顯。當創建表的命令中包含有唯壹性關鍵字時,不能創建位圖索引,創建全局分區索引時也不能用位圖索引。  (二)索引按功能和索引對象分還有以下類型。  (1)唯壹索引意味著不會有兩行記錄相同的索引鍵值。唯壹索引表中的記錄沒有RowID,不能再對其建立其他索引。在oracle10g中,要建立唯壹索引,必須在表中設置主關鍵字,建立了唯壹索引的表只按照該唯壹索引結構排序。  (2)非唯壹索引不對索引列的值進行唯壹性限制。  (3)分區索引是指索引可以分散地存在於多個不同的表空間中,其優點是可以提高數據查詢的效率。  (4)未排序索引也稱為正向索引。Oracle10g數據庫中的行是按升序排序的,創建索引時不必指定對其排序而使用默認的順序。  (5)逆序索引也稱反向索引。該索引同樣保持列按順序排列,但是顛倒已索引的每列的字節。  (6)基於函數的索引是指索引中的壹列或者多列是壹個函數或者表達式,索引根據函數或表達式計算索引列的值。可以將基於函數的索引建立創建成位圖索引。  另外,按照索引所包含的列數可以把索引分為單列索引和復合索引。索引列只有壹列的索引為單列索引,對多列同時索引稱為復合索引。