MySQL索引的底層實作原理
- 一、前言
- 二、索引型別
- 1、Hash索引
- 2、BTree索引和B+Tree索引
- (1)BTree索引
- (2)B+Tree索引
- (3)B+Tree對比BTree優點:
- 3、全文索引
一、前言
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索引時,會為文本生成一份單詞的清單,在索引時會根據這個單詞的清單進行索引,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/280264.html
標籤:其他
上一篇:資料庫作業14:SQL總結
下一篇:Oracle進階(三)常用函式
