註:這裡主要針對的是InnoDB儲存引擎的B Tree索引資料結構
下面主要介紹五種索引類型以及各自的特點和不同。
1.B-Tree索引
因為儲存引擎不⽤進⾏全表掃描來獲取數據,直接從索引的根節點開始搜索,從⽽能加快存取資料的速度。
優點:
B-Tree對索引是順序組織儲存的,很適合用來尋找範圍資料適⽤於全鍵值、鍵值範圍或鍵前綴查找(根據最左前綴查找)
限制:
對於聯合索引來說,如果不是從最左列開始查找,則⽆法使⽤索引;不能跳過索引中的
2.B Tree索引
是B-Tree索引的變種,現在主流的儲存引擎都不⽤單純的B-Tree, ⽽是其變種B Tree或T-Tree等等
和B-Tree的差別:
和B-Tree最主要的差別就是B Tree的內節點不儲存data,只儲存key,葉⼦節點不儲存指標
3.Hash索引
基於Hash表實現,只有Memory儲存引擎明確
優點:
⽀持哈希索引
適合等值查詢,如= 、 in() 、 <=>
弊端:
不⽀持範圍查詢
因為不是按照索引值順序儲存的,就不能像B Tree索引⼀樣利⽤索引完成排序,Hash索引在查詢等值時⾮常快,因為Hash索引總是索引的所有列的全部內容,所以不⽀持部分索引列的匹配查找。
如果有⼤量重複鍵值得情況下,哈希索引的效率會很低,因為有哈希碰撞問題,程式設計師可以在B Tree索引的基礎上建立⾃適應Hash索引
4.全文索引
MyISAM和InnoDB都⽀持全⽂索引,有三種模式:⾃然語⾔模式,布林模式和查詢擴充模式
5.R-Tree索引
MyISAM⽀持R-Tree索引,這個和全⽂索引基本上不問
以上是MySQL的索引類型及特性是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!