共計 1069 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要介紹 MySQL 索引的底層實現原理是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
MySQL 索引的底層實現原理
1、Hash 索引
2、BTree 索引和 B +Tree 索引
3、全文索引
(1)BTree 索引
(2)B+Tree 索引
(3)B+Tree 對比 BTree 優點:
一、前言
二、索引類型
一、前言
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 索引的底層實現原理是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!
向 AI 問一下細節