亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql 聯合索引 數據結構是怎樣的

mysql 聯合索引 數據結構是怎樣的

PIPIONE 2019-01-29 13:21:57
如果是單索引,底層數據結構是B+ 樹這點可以理解,但是如果是聯合索引哪,搜了很久,感覺并沒有明確的說明,看到有篇文章講到,但是 感覺文章是錯誤的 :https://blog.csdn.net/weixin_...疑惑關鍵點:每個非葉節點 都應該 包含了聯合索引中的所有字段,而不是像這篇文章里說的 只包含第一個字段的索引信息。最左原則 在這樣的B+ 樹怎么體現還有這篇:https://use-the-index-luke.co...這篇里講的 每個非葉節點 包含了所有的字段,但是看起來并沒有效果
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

聯合索引的分支塊包含索引鍵值列以及相應的指針,但不是葉子塊的所有鍵值都列舉在分支塊里,具體跟分支塊的指針有關系:
不管是聯合索引還是單列索引,分支塊都包含兩種指針,一種叫LMC,另一種就是分支塊的索引行對應的指針。
1.LMC,left most child,每個分支塊都會有一個,而且只會有一個,這個指針指向一個索引葉子塊,這個LMC指針的特征是,所指向的葉子塊,其所包含的索引鍵值的最大值,小于該分支塊所有索引鍵值的最小值。例如分支的索引鍵值為(AD,AK,...),那么LMC所指向的葉子塊的索引列值只能是排在AD前面的鍵值,例如AB,AC等;
2.分支塊的索引行對應的指針,首先明確,一個分支塊指向多個葉子塊,但并不是葉子塊里的所有鍵值都列舉在葉子塊里。葉子塊的內容除了上述說的LMC,其余的即是索引鍵值+對應的指針,而這個指針所指向的葉子塊,其所包含的最小鍵值都要比該指針在分支塊里對應的索引鍵值大。例如分支塊的索引行是AD+指針,那么這個指針所指向的葉子塊的最小鍵值必須比AD大,可以是ADF,可以是AK,但不能是AC。也就是說,分支塊的每一個索引行對應的指針,都指向一個葉子塊,且指向的葉子塊的索引鍵的最小值,都比這個索引鍵值大。

圖就不畫了,腦補吧~


查看完整回答
反對 回復 2019-01-29
  • 1 回答
  • 0 關注
  • 1133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號