MySQl 索引分析

2021-09-02 10:33:24 字數 1086 閱讀 2819

前序: 

索引有多種型別,其中包括主鍵索引、唯一索引、b+tree索引(聚集索引和非聚集索引)、雜湊索引等等,下面主要深入了解一下b+tree索引。

b+tree介紹

mysql是由b+tree構成的,下面先來介紹一下什麼是b+tree。

①b+tree是為磁碟或者其他直接訪問輔助裝置而設計的一種平衡二叉樹。(這句話怎麼理解?)

答:資料庫系統的設計者巧妙利用了磁碟預讀原理,將乙個節點的大小設為等於乙個頁,這樣每個節點只需要一次i/o就可以完全載入。為了達到這個目的,在實際實現b+tree還需要使用如下技巧:每次新建節點時,直接申請乙個頁的空間,這樣就保證乙個節點物理上也儲存在乙個頁裡,加之計算機儲存分配都是按頁對齊的,就實現了乙個node只需一次i/o。

②b+tree的節點都是按照鍵值的大小順序存放的,葉節點之間也通過指標連線起來,為了提高取資料時的效率。

具體結構如下圖:

b+tree索引

b+tree索引包含了聚集索引和非聚集索引。

①innodb

聚集索引:(

innodb

主鍵)

聚集索引就是按照每張表的主鍵構造一顆b+tree,並且葉子節點就是存放的是整張表的行記錄資料的資料頁,每個資料頁之間也通過雙向鍊錶進行連線。

非聚集索引:(

innodb

非主鍵)

非聚集索引與聚集索引唯一的不同就是非聚集索引葉子節點存放的data是對應的資料聚集索引的key,所以每當訪問非聚集索引的資料,其實是走了兩個步驟,首先找到聚集索引的key,再通過聚集索引的key找到對應的資料資訊。

只有非聚集索引。

MySQL索引分析

最近學習mysql索引,總結的了一些東西,若有不對之處,歡迎指正。1.最左匹配,如果乙個索引包含多列,在查詢時,如果第一列沒有出現在此索引中,則此查詢不會使用此索引。分析 假設乙個學生的表的索引是 index1 name,age,gender 索引結構如下 語句1 select from stude...

mysql 分析索引效率

分析索引效率 現在我們已經知道了一些如何選擇索引列的知識,但還無法判斷哪乙個最有效。mysql提供了乙個內建的sql命令幫助我們完成這個任務,這就是explain命令。explain命令的一般語法是 explain explain select peopleid from people where ...

Mysql各種索引分析

mysql官方堆索引的定義為 索引 index 是幫助mysql高效獲取資料的資料結構 有序 在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用 指向 資料,這樣就可以在這些資料結構上實現高階查詢演算法,這種資料結構就是索引。類似資料的目錄索引,提高資料檢索的效率...