索引和雜湊

2021-07-03 10:09:31 字數 1169 閱讀 2728

順序索引

1、稠密索引:對應檔案中搜尋碼的每乙個值有乙個索引記錄。索引記錄包括搜尋碼值以及指向具有該搜尋碼值的第乙個資料記錄的指標。可更快定位記錄。

2、稀疏索引:只為搜尋碼的某些值建立索引記錄。佔空間較小,插入和刪除時的維護開銷較小。

多級索引

在主索引上構造乙個稀疏索引,如果要搜尋乙個記錄,首先在外層索引上用二分法找到不大於所需搜尋碼值的最大收縮碼值鎖對應的記錄。指標指向乙個內層索引塊。我們對這一塊做掃瞄,知道找不到不大於所需搜尋碼值的最大搜尋碼值所對應的記錄。這一記錄的指標指向包含所查詢記錄的檔案塊。

b+樹索引檔案

典型的b+樹結點結構最多包含n-1個搜尋碼值,以及n個指標,馬格結點中的索引碼值按次序存放。

雜湊索引

動態雜湊法:

圖中出現在桶位址上方的i表明雜湊值h(k)中有i位需要用來決定對應於k的桶。幾個連續的表項可能指向同乙個桶,它們有乙個共同的雜湊字首,其長度可能小於i。因此,給每乙個桶附加乙個整數值,用來表明共同的雜湊字首長度。附加給桶j的證書是ij。桶位址表中指向桶j的表項數目為2^(i-1)。為了確定含有搜尋碼值ki的桶的位置,先找到h(ki)高i為二進位制字串對應的表項,再根據表項中的指標來得到桶的位置。

比較

索引或雜湊住址的週期性充足代價可否接受?

插入和刪除的相對頻率怎樣?

為了優化平均訪問時間而增加最壞情況下的訪問時間的做法是否可取?

使用者可能提出哪些型別的查詢?

對於如select a1,a2,…an from r where ai=c的查詢,雜湊更可取;對於如select a1,a2,…an from r where aic1,順序索引更可取。

多碼訪問

1.網格檔案:

網格陣列的每個單元包含乙個指向桶的指標,桶中包含若干搜尋碼值和記錄指標。虛線框指向同乙個桶。網格檔案大大減少了多碼查詢的處理時間。然而,它增加了空間開銷,偶那個是增加了記錄插入和刪除的開銷。如果經常對檔案插入,必須週期地對檔案進行重組。

分段雜湊

分段雜湊只用於碼值,而不是區間,分段雜湊中沒有目錄,而由雜湊值直接給出桶位址。

索引和雜湊

順序索引 1 稠密索引 對應檔案中搜尋碼的每乙個值有乙個索引記錄。索引記錄包括搜尋碼值以及指向具有該搜尋碼值的第乙個資料記錄的指標。可更快定位記錄。2 稀疏索引 只為搜尋碼的某些值建立索引記錄。佔空間較小,插入和刪除時的維護開銷較小。多級索引 在主索引上構造乙個稀疏索引,如果要搜尋乙個記錄,首先在外...

Mysql B tree索引和雜湊索引

hash 索引結構的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像b tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的io訪問,所以 hash 索引的查詢效率要遠高於 b tree 索引。可 能很多人又有疑問了,既然 hash 索引的效率要比 b tree 高很多,為什麼大...

雜湊索引和B 樹索引

在理想的情況下,key非常分散,不存在hash碰撞的話,採用hash索引可以唯一得確定乙個key的位置,並且這個位置上就只有乙個key,所以查詢時間複雜度是o 1 非常快,這是hash索引的最主要優勢。但是呢,hash索引不是沒有缺點,不存在hash碰撞這是理想情況,通常情況下,同乙個hash值都不...