新聞中心
這篇文章主要介紹MySQL索引的底層實現(xiàn)原理是什么,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為阜新企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計,阜新網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
MySQL索引的底層實現(xiàn)原理
1、Hash索引
2、BTree索引和B+Tree索引
3、全文索引
(1)BTree索引
(2)B+Tree索引
(3)B+Tree對比BTree優(yōu)點:
一、前言
二、索引類型
一、前言
MySQL支持諸多存儲引擎,而各種存儲引擎對索引的支持也各有不同,因此MySQL數(shù)據(jù)庫支持多種索引類型,如BTree索引,B+Tree索引,Hash索引,全文索引等等。
二、索引類型
1、Hash索引
只有memory(內(nèi)存)存儲引擎支持Hash索引,Hash索引引用索引列的值計算該值的hashCode,然后在hashCode相應(yīng)的位置存儲該值所在行數(shù)據(jù)的物理位置,因為使用散列算法,因此訪問速度非??欤且粋€值只能對應(yīng)一個hashCode,而且是散列的分布式,因此Hash索引不支持范圍查找和排序的功能。
2、BTree索引和B+Tree索引
(1)BTree索引
BTree索引是平衡搜索多叉樹木,如果設(shè)樹的深度為2d(d > 1),高度為h,那么BTree要滿足以下條件:
①每個葉子結(jié)點的高度要一樣,等于h;
②每個葉子節(jié)點由n-1個key和n個指針point組成,其中d <= n <= 2d,key和point相互間隔,結(jié)點兩端一定是key;
③葉子結(jié)點指針都為null;
④非葉子結(jié)點的key都是[key, data]二元組,其中key表示作為索引的鍵,data為鍵值所在行的數(shù)據(jù)。
(2)B+Tree索引
B+Tree是BTree的一個變種,如果設(shè)d為樹的度,h為數(shù)的高度,B+Tree和BTree的不同主要在于:
①B+Tree中的非葉子結(jié)點不存儲數(shù)據(jù),只存儲鍵值;
②B+Tree的葉子結(jié)點沒有指針,所有鍵值都會出現(xiàn)在葉子結(jié)點上,且key存儲的鍵值對應(yīng)data數(shù)據(jù)的物理地址;
③B+Tree的每個非葉子結(jié)點由n個鍵值key和n個指針point組成。
(3)B+Tree對比BTree優(yōu)點:
①磁盤讀寫代價更低;
②查詢速度更穩(wěn)定。
3、全文索引
FullText(全文)索引,僅可用于MyISAM和InnoDB,針對較大的數(shù)據(jù),生成全文索引非常的消耗時間和空間。
在生成FullText索引時,會為文本生成一份單詞的清單,在索引時會根據(jù)這個單詞的清單進(jìn)行索引。
以上是“MySQL索引的底層實現(xiàn)原理是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站題目:MySQL索引的底層實現(xiàn)原理是什么
瀏覽路徑:http://fisionsoft.com.cn/article/pocdps.html