ysnbb
ysnbb
2021-03-27 20:35
采纳率: 100%
浏览 64

MySQL B+树索引问题

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

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

感谢~

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • huangzhilin2015
    黄智霖-blog 2021-03-27 21:36
    已采纳

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

    点赞 评论
  • nuaak
    沐川 2021-03-27 21:03

    疑问1:

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

    疑问2:

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

    点赞 评论
  • nuaak
    沐川 2021-03-27 21:50

    是的

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-03-29 10:43

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

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

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

    点赞 评论

相关推荐