資料庫索引實現原理

2021-08-31 17:21:22 字數 1346 閱讀 8704

1.什麼是索引?

2.索引的型別

有兩種基本的索引結構,即索引檔案的儲存方式。乙個是順序索引,就是根據值的順序排序的(這個檔案裡面的值就是為其建索引的字段值,它被順序地放在索引檔案裡面);另外乙個是雜湊索引,就是將值平均分配到若干雜湊桶中,通過雜湊函式定位的。

2.1 順序索引

順序索引分為兩類,單級索引(很少使用)和多級索引(通常是b+樹,大量使用)。

我們經常聽到b+樹就是這個概念,用這個樹的目的和紅黑樹差不多,也是為了盡量保持樹的平衡,當然紅黑樹是二叉樹,但b+樹就不是二叉樹了,節點下面可以有多個子節點,資料庫開發商會設定子節點數的乙個最大值,這個值不會太小,所以b+樹一般來說比較矮胖,而紅黑樹就比較瘦高了。

關於b+樹的插入,刪除,會涉及到一些演算法以保持樹的平衡,這裡就不詳述了。oracle的預設索引就是這種結構的。

如果經常需要同時對兩個字段進行and查詢,那麼使用兩個單獨索引不如建立乙個復合索引,因為兩個單獨索引通常資料庫只能使用其中乙個,而使用復合索引因為索引本身就對應到兩個欄位上的,效率會有很大提高。

2.2 雜湊索引

第二種索引叫做雜湊索引,就是通過雜湊函式來定位的一種索引,不過很少有單獨使用雜湊索引的,反而是雜湊檔案組織用的比較多。

雜湊檔案組織就是根據乙個鍵通過雜湊計算把對應的記錄都放到同乙個槽中,這樣的話相同的鍵值對應的記錄就一定是放在同乙個檔案裡了,也就減少了檔案讀取的次數,提高了效率。

雜湊索引就是根據對應鍵的雜湊碼來找到最終的索引項的技術,其實和b樹差不多,也就是一種索引之上的二級輔助索引,我理解雜湊索引都是二級或更高階的稀疏索引,否則桶就太多了,效率也不會很高。

2.3 位圖索引

位圖索引是一種針對多個欄位的簡單查詢設計一種特殊的索引,適用範圍比較小,只適用於字段值固定並且值的種類很少的情況,比如性別,只能有男和女,或者級別,狀態等等,並且只有在同時對多個這樣的字段查詢時才能體現出位圖的優勢。

點陣圖的基本思想就是對每乙個條件都用0或者1來表示,如有5條記錄,性別分別是男,女,男,男,女,那麼如果使用位圖索引就會建立兩個位圖,對應男的10110和對應女的01001,這樣做有什麼好處呢,就是如果同時對多個這種型別的字段進行and或or查詢時,可以使用按位與和按位或來直接得到結果了。

總結:

b+樹最常用,效能也不差,用於範圍查詢和單值查詢都可以。特別是範圍查詢,只有用b+樹這種順序索引才行。

hash的如果只是對單值查詢的話速度會比b+樹快一點,但是oracle好像不支援hash索引,只支援hash表空間。

點陣圖的使用情況很侷限,只有很少的情況才能用,一定要確定真正適合使用這種索引才用(值的型別很少並且需要復合查詢),否則建立一大堆點陣圖就一點意義都沒有了。

資料庫索引的實現原理

說白了,索引問題就是乙個查詢問題。資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。索引的實現通常使用b樹及其變種b 樹。在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用 指向 資料,這樣就可以在這些資料結構上實現高階查詢演算...

資料庫索引的實現原理

資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。索引的實現通常使用b樹及其變種b 樹。在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用 指向 資料,這樣就可以在這些資料結構上實現高階查詢演算法。這種資料結構,就是索引。為表設...

資料庫索引的實現原理

說白了,索引問題就是乙個查詢問題。資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。索引的實現通常使用b樹及其變種b 樹。在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用 指向 資料,這樣就可以在這些資料結構上實現高階查詢演算...