詳解MySQL索引的底層實現原理

詳解MySQL索引的底層實現原理

mysql索引的底層實現原理

    • 一、前言
    • 二、索引類型
      • 1、Hash索引
      • 2、BTree索引和B+Tree索引
        • (1)BTree索引
        • (2)B+Tree索引
        • (3)B+Tree對比BTree優點:
      • 3、全文索引

相關免費學習推薦:mysql視頻教程

一、前言

MySQL支持諸多存儲引擎,而各種存儲引擎對索引的支持也各有不同,因此MySQL數據庫支持多種索引類型,如BTree索引,B+Tree索引,Hash索引,全文索引等等。

二、索引類型

1、Hash索引

只有memory(內存)存儲引擎支持Hash索引,Hash索引引用索引列的值計算該值的hashCode,然后在hashCode相應的位置存儲該值所在行數據的物理位置,因為使用散列算法,因此訪問速度非常快,但是一個值只能對應一個hashCode,而且是散列的分布式,因此Hash索引不支持范圍查找和排序的功能。

2、BTree索引和B+Tree索引

(1)BTree索引

BTree索引是平衡搜索多叉樹木,如果設樹的深度為2d(d > 1),高度為h,那么BTree要滿足以下條件:
①每個葉子結點的高度要一樣,等于h;
②每個葉子節點由n-1個key和n個指針point組成,其中d ③葉子結點指針都為NULL
④非葉子結點的key都是[key, data]二元組,其中key表示作為索引的鍵,data為鍵值所在行的數據。

(2)B+Tree索引

B+Tree是BTree的一個變種,如果設d為樹的度,h為數的高度,B+Tree和BTree的不同主要在于:
①B+Tree中的非葉子結點不存儲數據,只存儲鍵值;
②B+Tree的葉子結點沒有指針,所有鍵值都會出現在葉子結點上,且key存儲的鍵值對應data數據的物理地址;
③B+Tree的每個非葉子結點由n個鍵值key和n個指針point組成。

(3)B+Tree對比BTree優點:

①磁盤讀寫代價更低;
②查詢速度更穩定。

3、全文索引

FullText(全文)索引,僅可用于MyISAM和InnoDB,針對較大的數據,生成全文索引非常的消耗時間和空間。
在生成FullText索引時,會為文本生成一份單詞的清單,在索引時會根據這個單詞的清單進行索引。

相關免費學習推薦:mysql數據庫(視頻)

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享