資料庫索引方式

2021-08-08 19:21:58 字數 1182 閱讀 2146

1 b+樹

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

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

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

b+ 樹是一種樹資料結構,是乙個n叉排序樹,每個節點通常有多個孩子,一棵b+樹包含根節點、內部節點和葉子節點。根節點可能是乙個葉子節點,也可能是乙個包含兩個或兩個以上孩子節點的節點。

2 雜湊索引

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

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

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

3 位圖索引

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

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

b+樹最常用,效能也不差,用於範圍查詢和單值查詢都可以。特別是範圍查詢,非得用b+樹這種順序的才可以了。

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

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

資料庫索引使用方式

mysql5.5以上的預設儲存引擎innodb,只顯式支援btree 事實上從資料結構上來講是b 樹,mysql稱之為btree 索引,對於頻繁訪問的表,innodb會建立自適應hash索引,即在b樹索引基礎上建立hash索引,可以顯著提高查詢效率,使用者是無法自己指定的,除此之外還有hash索引和...

mysql索引方式 MySQL資料庫的索引方式

mysql目前主要支援索引方法 b tree,hash,r tree b tree b tree是最常見的索引型別,所有的列都是排序過的,每個葉節點跟節點距離相等。因此,b tree適合查詢範圍的資料,可以直接支援資料排序。b tree在myisanyo中,索引檔案是記錄磁碟的位址 而在innodb...

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...