MySQL索引的底層實作原理
#相關免費學習推薦:mysql影片教學
一、前言
MySQL支援許多儲存引擎,而各種儲存引擎對索引的支援也各有不同,因此MySQL資料庫支援多種索引類型,如BTree索引,B Tree索引,Hash索引,全文索引等等。
二、索引類型
1、Hash索引
只有memory(記憶體)儲存引擎支援Hash索引,Hash索引引用索引列的值計算該值的hashCode,然後在hashCode對應的位置儲存該值所在行資料的實體位置,因為使用雜湊演算法,因此存取速度非常快,但是一個值只能對應一個hashCode,而且是散列的分佈式,因此Hash索引不支援範圍查找和排序的功能。
2、BTree索引和B Tree索引
BTree索引是平衡搜尋多叉樹木,如果設樹的深度為2d(d > 1),高度為h,那麼BTree要滿足以下條件:
①每個葉子結點的高度要一樣,等於h;
②每個葉子節點由n-1個key和n個指針point組成,其中d <= n <= 2d,key和point相互間隔,結點兩端一定是key;
③葉子結點指針都為null;
④非葉子結點的key都是[key, data]二元組,其中key表示作為索引的鍵,data為鍵值所在行的資料。
B Tree是BTree的變種,如果設d為樹的度,h為數的高度,B Tree和BTree的不同主要在於:
①B Tree中的非葉子結點不儲存數據,只儲存鍵值;
②B Tree的葉子結點沒有指針,所有鍵值都會出現在葉子結點上,且key儲存的鍵值對應data數據的物理位址;
③B Tree的每個非葉子結點由n個鍵值key和n個指標point組成。
①磁碟讀寫代價更低;
②查詢速度更穩定。
3、全文索引
FullText(全文)索引,僅可用於MyISAM和InnoDB,針對較大的數據,產生全文索引非常的消耗時間和空間。
在產生FullText索引時,會為文字產生一份單字的清單,在索引時會根據這個單字的清單進行索引。
相關免費學習推薦:mysql資料庫(影片)
以上是詳解MySQL索引的底層實作原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!