MySQL B+树索引问题

疑问1:叶子节点内的数据是以单向链表组织的,为什么不像两页之间那样用双向链表呢?如果是单向链表,在一个页内做等值查询的话,还是要遍历每项数据才能定位,而且对于诸如"<"的查询,单向链表也没法从后往前选择数据

疑问2:非叶子节点内的索引数据也是链表结构吗?还是是数组?

感谢~

你可以去了解一下MySQL页的结构,在一个页内其实不是直接遍历链表的,页中有一个PageDirectory区域,通过这个区域可以将单向链表分为多个组,由于数据是有序的,这个组可以使用二分法进行查找,定位到固定的一个组之后,然后再到组中去寻找数据

疑问1:

因为根本不需要反向查找,当我要查询小于某一个值的时候,肯定是从索引的第一个key,查询到小于的那个key为止;

疑问2:

非叶子节点不是链表结构的,只是单纯的数据页,因为不需要通过非叶子节点进行遍历,所有的遍历只会通过叶子节点进行。至于是不是数组,我觉得可以理解为数组,因为非叶子节点,要么是根节点,要么是根节点或其父节点指向的节点。

是的

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632