索引是若干資料行的關鍵字的列表,查詢資料時,通過索引中的關鍵字可以快速定位到要訪問的記錄所在的資料區塊,從而大大減少讀取資料區塊的I/O次數,因此可以顯著提高效能。
索引的原理
下面通過查詢資料表“scott.student”的ROWID列為例,在【SQLPlus Worksheet】中執行下面的語句,查詢結果如圖7.38所示。
―――――――――――――――――――――――――――――――――――――
select rowid,student_id,name,professional,birthday,director_id from scott.student;
―――――――――――――――――――――――――――――――――――――
【參見光碟片檔案】:\第7章\ selectrowid.sql。
以資料表“scott.student”的索引為例,下面的資料就是以“student_id”資料列為例建立索引後的部分資料。
―――――――――――――――――――――――――――――――――――――
ROWID STUDENT_ID
------------------ ----------
AAAH2oAAIAAAABSAAA 20020101
AAAH2oAAIAAAABSAAJ 20020102
AAAH2oAAIAAAABSAAK 20020103
AAAH2oAAIAAAABSAAL 20020104
AAAH2oAAIAAAABSAAN 20030102
AAAH2oAAIAAAABSAAO 20030103
AAAH2oAAIAAAABSAAP 20030104
―――――――――――――――――――――――――――――――――――――
Oracle 9i支援的索引
Oracle 9i中的索引可以分為兩大類:B-樹索引和位元影像索引。
表7.9 B-樹索引的分類
名稱 |
含義 |
Non-Unique |
非惟一索引,預設的B-樹索引,索引列值可以不是惟一的 |
Unique |
惟一索引,在建立索引時指定“UNIQUE”關鍵字可以建立惟一索引。當建立“主碼約束條件”時也會建立惟一索引,索引列值是惟一的 |
Reverse Key |
反向關鍵字索引,通過在建立索引時指定“REVERSE”關鍵字,可以建立反向關鍵字索引,被索引的每個資料列中的資料都是反向儲存的,但仍然保持原來資料列的次序 |
Function-based |
基於函數的索引,對資料列使用運算式,按照運算式結果來建立B-樹索引的各節點,適合特定的,經常使用該運算式進行類似查詢的資料表的索引的組織 |
2. 位元影像索引
對“scott.student”資料表的資料列“professional”建立位元影像索可能的執行個體如下。
―――――――――――――――――――――――――――――――――――――
記錄號 professional取值 位元影像饕?br> 1 軟體工程 1
2 電腦安全 2
3 圖形映像 3
7 Web安全 2
―――――――――――――――――――――――――――――――――――――
主碼自動建立的索引
(1)如圖7.40所示。
(2)出現如圖7.41所示的編輯索引的【一般資訊】選項卡。
如何建立索引
(1)如圖7.42所示。
(2)出現如圖7.43所示的建立索引的【一般資訊】選項卡。
(3)切換到圖7.44所示的建立索引的【分區】選項卡。
(4)切換到圖7.45所示的建立索引的【儲存】選項卡。
(5)切換到圖7.46所示的建立索引的【選項】選項卡。
(6)成功建立索引後出現如圖7.47所示介面。
(7)在【企業管理器】中可以查看建立的索引,如圖7.48所示。
(8)上述建立索引對應的SQL代碼如下。
―――――――――――――――――――――――――――――――――――――
CREATE INDEX "SCOTT"."姓名欄位索引"
ON "SCOTT"."STUDENT"("NAME")
TABLESPACE "INDX";
―――――――――――――――――――――――――――――――――――――
【參見光碟片檔案】:\第7章\ createindex.sql。
(9)讀者也可以直接在【SQLPlus Worksheet】中執行createindex.sql檔案完成索引的建立,如圖7.49所示。
如何刪除索引
(1)如圖7.50所示。
(2)出現如圖7.51所示的【索引刪除確認】介面。