索引是定義在儲存表(table)基礎之上,有助於無需檢查所有記錄而快速定位所需記錄的一種輔助儲存結構,由一系列儲存在磁碟上的**索引項(index entries)**組成,每一索引項又由兩部分構成:
儲存索引項的檔案為索引檔案,相對應,儲存表又稱為主檔案。
索引檔案是一種輔助儲存結構,其存在與否不改變儲存表的物理儲存結構;然而其存在,可以明顯提高儲存表的訪問速度。
索引檔案組織方式有兩種:(相對照的,主檔案組織有堆檔案、排序檔案、雜湊檔案、聚簇檔案等多種方式)
在乙個表上可以針對不同的屬性或屬性組合建立不同的索引檔案,可建立多個索引檔案。索引欄位的值可以是table中的任何乙個屬性的值或任何多個屬性值的組合值。
索引檔案比主檔案小很多。通過檢索乙個小的索引檔案(可全部裝載進記憶體),快速定位後,再有針對性的讀取非常大的主檔案中的有關記錄。
有索引時,更新操作必須同步更新索引檔案和主檔案。否則會出現索引檔案和主檔案不一致的情況。
索引技術應用使檢索效率大幅度提高,但同時其也增加了儲存空間、使**維護負擔加重(**不僅要維護主檔案,而且要維護索引檔案)
衡量索引效能好壞:
對哪些屬性建立索引**:對經常出現在檢索條件、連線條件、分組計算條件中的屬性可建立索引。**
索引可以由使用者在任何屬性上建立
建立索引:
create
[unique
]index indexname
on tablename ( colname [
asc|
desc] )
;// 在student表中建立乙個基於sname的索引
create
index idxsname on student(sname)
;// 在student表中建立乙個基於sname和sclass的索引 兩個屬性值組合起來進行排序
create
index idxsnamcl on student(sname, sclass)
;// 如某索引不再需要,則可通過撤消命令,撤消使用者建立的索引
drop
index indexname;
選擇哪些屬性建立索引,以及如何建立與維護索引,如何利用索引改善資料庫的執行效能,是dba(資料庫管理員)的重要職責。
是否建立和在哪些屬性上建立索引需要考慮:訪問時間、插入時間、刪除時間與空間負載。既要改善效能,又要控制代價。
建立索引還需考慮索引的型別:索引如何支援訪問的有效性,比如:支援的是屬性的限定值(是否符合單一值),還是支援屬性的限定範圍的(是否符合一定範圍)
對哪些屬性建立索引**:對經常出現在檢索條件、連線條件、分組計算條件中的屬性可建立索引。**
定位索引字段值為k的記錄,需要
稀疏索引的使用要求—主檔案必須是按對應索引字段屬性排序儲存
相比稠密索引:空間占用更少,維護任務更輕,但速度更慢
平衡:索引項不指向記錄指標,而是指向記錄所在儲存塊的指標,即每一儲存塊有乙個索引項,而不是每條記錄有一索引項----主索引
先查索引,然後再依據索引讀主檔案
索引檔案中不存在搜尋碼的值,就代表著主檔案中沒有對應搜尋碼的記錄
分為候選鍵屬性上的稠密索引和非候選鍵上的稠密索引。候選鍵要求屬性具有唯一性,可以做到一一對應。
非候選鍵屬性上的稠密索引:
主索引通常是對每一儲存塊有乙個索引項,索引項的總數和儲存表所佔的儲存塊數目相同,儲存表的每一儲存塊的第一條記錄,又稱為錨記錄(anchor record), 或簡稱為塊錨(block anchor)
主索引是稀疏索引。
輔助索引是定義在主檔案的任一或多個非排序欄位上的輔助儲存結構。
聚簇索引 是指索引中鄰近的記錄在主檔案中也是臨近儲存的;
非聚簇索引 是指索引中鄰近的記錄在主檔案中不一定是鄰近儲存的。
廣泛用於文字檢索,文字查詢的索引。搜尋引擎對於文件進行檢索。
正排:乙個文件包含了哪些詞彙?
#doc1,倒排:乙個詞彙包含在哪些文件中
word1,對每個單詞,引入中間結構,指向包含該單詞的文件的位址的鍊錶
常見的多級索引形式,如b樹/b+樹索引,以樹型資料結構來組織索引項等當索引項比較多時,不能夠一次性地裝入記憶體時,可以對索引再建立索引,依此類推,形成多級索引。
b+樹索引:一種以樹型資料結構來組織索引項的多級索引。
乙個資料庫中可以儲存多個索引項。
b+樹中每個節點都是這樣的乙個儲存塊。
索引檔案,第一層為根節點,第二層為非葉節點,第三層為葉子節點。
主索引檔案,第一層為索引檔案的葉子節點。下面為主檔案資料塊。
b+樹的特性:
一塊中存放多少個索引項(n的大小)?
有n-1個索引項(《索引字段值ki, 指標pi>)+1個指標(pn);
索引字段值x在ki-1與ki之間的 的由pi指向;而ki與ki+1之間的由pi+1指向。
有些索引字段值重複出現於葉節點和非葉節點的。
b+樹是一種平衡樹,如何保證:
**與合併能夠保證:
i. 用b+樹建立鍵屬性稠密索引
索引欄位是主檔案的主鍵,索引是稠密的。主檔案可以按主鍵排序,也可以不按主鍵排序。指標指向的是記錄。
ii. 用b+樹建立稀疏索引(或主索引)
索引欄位是主檔案的主鍵,索引是稀疏的。主檔案必須按主鍵排序。
指標指向的是資料塊
iii. 用b+樹建立非鍵屬性稠密索引
索引欄位是主檔案的非鍵屬性,索引是稠密的。主檔案按非鍵屬性排序
索引檔案的索引欄位是無重複的。指標指向的是記錄。
iv. 用b+樹建立非鍵屬性稠密索引
•索引欄位是主檔案的非鍵屬性。主檔案不按此非鍵屬性排序
•索引檔案的索引字段值是有重複的。指標指向的是記錄。
不同之處
相同之處
對比以下問題:
如何利用b+樹進行檢索?
如何利用b+樹進行增加和刪除操作?
b+樹的增加和刪除操作時如何進行**和合併?
什麼條件下**與合併?
**與合併時如何調整b+樹的指標?
資料庫系統原理(第三章資料庫設計 )
資料庫的生命週期 資料庫設計的目標 資料庫設計的內容 資料庫設計的方法 資料庫設計的過程 需求分析 資料庫設計的起點 作用 該分析報告是後續概念設計 邏輯設計 物理設計 資料庫建立與維護的依據。需求分析的步驟 確定資料庫範圍 資料庫的第一項工作 1 有效地利用計算機裝置及資料庫系統的潛在能力 2 提...
第三章資料庫索引技術
1.什麼是主索引 輔助索引 稠密索引 稀疏索引 有序索引 雜湊索引?主索引 如果索引記錄的順序與資料檔案記錄的儲存順序相同,則此類索引稱主索引 輔助索引 如果索引記錄的順序與檔案記錄的儲存順序不同,則稱為輔助索引 稠密索引 索引記錄包括索引鍵值及指向具有該鍵值的第乙個資料記錄的指標。具有相同鍵值的其...
優化資料庫第三章
第三章變數的使用的是先宣告,在賦值。區域性變數前必須有 作為字首,全域性變數前必須有兩個 作為字首。變數的賦值有兩種方式 set語句和select語句。輸出結果也有兩種方式 print語句和select語句。資料型別轉換的兩個函式 cast 和convert 控制流語句提供了條件操作所需的順序和邏輯...