概念
1、B Tree是在B-Tree基礎上的最佳化,使其更適合實現外部儲存索引結構。 在B Tree中,所有資料記錄節點都是按照鍵值大小順序存放在同一層的葉子節點上,而非葉子節點上只儲存key值訊息,這樣可以大大加大每個節點儲存的key值數量,降低B Tree的高度。
與B-Tree差異
B 的搜尋與B-樹也基本上相同,差異在於B 樹只有達到葉子結點才命中(B-樹可以在非葉子結點命中)
(1)所有關鍵字都出現在葉子結點的鍊錶中(稠密索引),且鍊錶中的關鍵字恰好是有序的;( 只有根節點存儲關鍵字最後樹的末梢才有值)
(2)非葉子結點相當於是葉子結點的索引(稀疏索引),葉子結點相當於是儲存(關鍵字)資料的資料層。 (非根節點,儲存的其實是指向根節點的索引 )
(3) 因為前兩點,所以 不可能在非葉子結點存資料。 (區別B-的第三條)
(4)根節點橫向也有鏈指針(方便快速順藤摸瓜嘛,沒這個指針,就算下一個取的值是挨著的鄰居,也得跑個圈才能拿到)
使用說明
2、B Tree索引是大多數MySQL儲存引擎的預設索引類型。
因為不再需要全表掃描,只需要對樹進行搜尋即可,所以查找速度快很多。
因為 B Tree 的有序性,所以除了用於查找,還可以用於排序和分組。
可以指定多個欄位作為索引列,多個索引列共同組成鍵。
適用於全鍵值、鍵值範圍和鍵前綴查找,其中鍵前綴查找只適用於最左前綴查找。如果不是按照索引列的順序進行查找,則無法使用索引。
以上是mysql B+Tree索引的概念是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!