首頁  >  文章  >  資料庫  >  詳解MySQL索引的底層實作原理

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

coldplay.xixi
coldplay.xixi轉載
2021-04-27 09:31:532414瀏覽

詳解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 <= n <= 2d,key和point相互間隔,結點兩端一定是key;
③葉子結點指針都為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資料庫(影片)

以上是詳解MySQL索引的底層實作原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除