索引背后的数据结构——B+树

编程入门 行业动态 更新时间:2024-10-15 02:31:14

索引背后的<a href=https://www.elefans.com/category/jswz/34/1769880.html style=数据结构——B+树"/>

索引背后的数据结构——B+树

为什么要使用B+树?

可以进行数据查询的数据结构有二叉搜索树、哈希表等。对于前者来说,树的高度越高,进行查询比较的时候访问磁盘的次数就越多。而后者只有在数据等于key值的时候才能进行查询,不能进行模糊匹配。所以出现了B+树来解决这些问题

B+树的前身——B树

B树可以认为是一个N叉搜索树。树的高度越高,进行查询比较的时候访问磁盘的次数就越多。

存放N个key,引出N+1个节点。例如:30引出的节点都要满足(X < 30) ,30和40之间引出的节点要满足(30<X<40)

当节点的子树多了之后,节点上保存的key多了,意味着在同样key的个数的前提下,B树的高度要比二叉搜索树低很多

B+树

B+树是存了N个key,引出N个节点。且底层的节点连接成类似于链表的结构

B+树的特点 

  • 一个节点可以存储N个key,N个key划分出了N个区间;
  • 每个节点中的key的值,都会在子结点中也存在(同时该key是子节点的最大值)
  • B+树的叶子节点,是首尾相连,类似于一个链表
  • 由于叶子节点是完整的数据集合,只在叶子节点这里存储数据表的每一行的数据。而非叶子节点,只存key值本身即可

B+树的优点

  • 当前一个节点保存更多的key,最终树的高度是相对更矮的。查询的时候减少了IO访问次数
  • 所有的查询最终都会落在叶子节点上,这意味着查询任何一个数据,经过的IO访问次数是一样的
  • B+树的所有叶子节点构成链表,此时比较方便进行范围查询
  • 由于数据都在叶子节点上,非叶子节点只存储key,导致非叶子节点占用空间较小。这些非叶子节点就可能在内存中缓存,又进一步减少了IO次数

更多推荐

索引背后的数据结构——B+树

本文发布于:2023-12-08 12:57:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1672862.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据结构   索引

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!