鍍金池/ 問答/數(shù)據(jù)庫/ B+樹的特性決定了非聚集索引插入的離散性,這句話怎么理解?

B+樹的特性決定了非聚集索引插入的離散性,這句話怎么理解?

這是我在《MySQL技術(shù)內(nèi)幕》中看到的一句話,不是很理解,希望前輩們可以解釋下。

回答
編輯回答
乞許

B+樹的葉節(jié)點(diǎn)是有序的。當(dāng)它用于聚集索引的時候,葉節(jié)點(diǎn)本身既是索引又是真實(shí)值。當(dāng)它用于非聚集索引的時候,葉節(jié)點(diǎn)僅僅是索引,索引的指針指向的才是真實(shí)值。由于此時索引是有序的,因此其指向通常是無序的,所以兩個連續(xù)的索引值可能對應(yīng)的真實(shí)值所在的行可能會離得很遠(yuǎn)。

舉個例子,一個表用整數(shù)id作為主鍵,且將主鍵當(dāng)做聚集索引。此時再用表中的另一列age當(dāng)做非聚集索引。由于表的行本身就是按主鍵排序的,因此age是無序的,所以age=10的行可能在第八行,而age=11的行卻可能位于第三十行,差別很大。所以在插入的時候就無法做到連續(xù)的索引插入到連續(xù)的行中,而只能一條一條地定位和插入

2017年9月5日 16:42