1.根據索引列值的唯壹性,索引可以分為唯壹索引和非唯壹索引;
非唯壹索引:
在表名(列名)表空間上創建索引索引名?表空間名稱;
唯壹索引:
創建主鍵或唯壹約束時,將在相應的列上自動創建唯壹索引;
2.索引列數:單列索引和復合索引;
3.根據索引列的物理組織。
索引創建格式:?
創造?獨壹無二。|?位圖?指數?& lt架構& gt。& ltindex _ name & gt?開嗎?& lt架構& gt。& lt表名& gt?(& ltcolumn_name》?|?& lt表情& gt?ASC?|?DESC,& ltcolumn_name》?|?& lt表情& gt?ASC?|?DESC,...)?表空間?& lt表空間名& gt?存儲?& lt存儲設置& gt?伐木?|?無日誌記錄?計算?統計學?沒有壓力?|?壓縮& ltnn & gt?NOSORT?|?反轉?分區?|?全球?分區& ltpartition _ setting & gt使用USER_IND_COLUMNS查詢表中相應字段索引的建立。
使用DBA_INDEXES/USER_INDEXES查詢所有索引的具體設置。
Oracle中的索引可以分為:B樹索引、位圖索引、反向鍵索引、基於函數的索引、簇索引、全局索引、局部索引等。下面逐壹解釋:
壹、B樹指數:
在最常用的索引中,每個葉節點中包含的數據包括索引列的值和數據表中相應行的rowids。簡單來說,在B樹索引中,快速查詢的目的是通過將索引列的值和相應記錄的rowids保存在索引中來實現的。其邏輯結構如下:
可以保證無論用戶想要搜索葉節點的哪個分支,都需要經過相同的索引級別,即都需要相同的I/O次數。
創建B樹索引的示例:
是否在t 1(id)上創建索引ind_t?;
註意1:索引是為字段創建的,不能為同壹個字段創建多個索引。
註意2:默認索引不是唯壹的,但也可以添加unique,表示索引的字段中沒有重復值(在定義unique約束時會自動創建);
註意3:創建主鍵時,默認情況下在主鍵上創建B樹索引,因此不能在主鍵上創建更多索引。
二、位圖索引:
在某些領域使用B樹索引的效率仍然不高。例如,如果性別字段中只有“男性和女性”兩個值,即使使用B樹索引,搜索時也會返回近壹半的記錄。
所以當壹個字段的基數很低時,就需要使用位圖索引。(“低”的標準是值的數量
位圖索引的邏輯結構如上圖所示:索引中不再記錄rowid和key值,而是將每個值作為壹列,並用0和1來表示行是否等於key值(0表示否;1表示是)。其中,位圖索引的行順序與原始表的行順序壹致,因此在查詢數據的過程中可以相應地計算出行程的原始物理位置。
創建位圖索引的示例:
在t1(類型)上創建位圖索引ind _ t;
註意:位圖索引不能是唯壹的索引,也不能與鍵值壹起壓縮。
三、反向關鍵指標:
考慮這種情況:壹個字段的值依次為1-1000,在建立B樹索引後,該值仍將增加,然後B編號索引將在後面繼續添加分支,這將形成壹個不對稱的樹,如下所示:
反向鍵索引是壹種特殊的B樹索引,它與存儲結構中的B樹索引完全相同。但是,對於數值,反向鍵索引將首先反轉每個鍵值的字節,然後在反轉後索引新數據。例如,輸入2008被轉換為8002,因此當該值增加壹次時,反向鍵的大小分布仍然相對均勻。
創建反向鍵索引的示例:
創造?t 1(id)反向索引ind _ t;
註意:鍵反轉由系統自己完成。對用戶透明。
第四,基於功能的索引:
有時,需要以下查詢:select * from t 1 where to _ char(date,‘yyyy’)》‘2007’;
然而,即使在日期字段上建立了索引,也必須掃描整個表。在這種情況下,可以使用基於函數的索引。其創建語法如下:
在t1上創建索引ind _ t(to _ char(date,‘yyyy‘));
註意:簡單地說,基於函數的索引是指將查詢中要使用的表達式作為索引項。
動詞 (verb的縮寫)全局索引和本地索引:
這個指數看似復雜,但實際上非常簡單。總之,不管怎麽分區,都是為了方便管理。
特定索引和表之間有三種關系:
1,本地分區索引:分區索引和分區表1對1。
2.全局分區索引:分區索引和分區表是n對n。
3.全局非分區索引:非分區索引和分區表1對n。
創建壹個示例:
首先,創建分區表
創造?餐桌學生
(
斯圖諾數(5),
sname VRV har 2(10),
存款編號(5)
)
哈希分區(deptno)
(
part_01表空間A1,
分區part_02表空間A2
);
創建本地分區索引(1v1):
對學生創建索引索引(stuno)
本地(
part_01表空間A2,
分區part_02表空間A1
);?-本地可以被忽略。
創建全局分區索引(NvN):
對學生創建索引索引(stuno)
全球?按範圍劃分(stuno)
(
分區p1的值小於(1000)表空間A1,
分區p2值小於(最大值)表空間A2
);?-只能執行範圍分區。
創建全局非分區索引(1vN)
創造?學生(stuno)全局索引ind _ t;
根據問題的具體類型,進行步驟拆解/原因原理分析/內容拓展等。
具體步驟如下:/造成這種情況的主要原因是