上一篇中,我们了解了B树,辣么。。B+树又是什么呢??

一:定义:B+树是基于B树的,是B树的变形,也是一种多路搜索树。查询性能更加出色。

1.每个父节点元素出现在子节点中,是子节点的最大或最小元素。

2.根节点的最大元素也是B+树中的最大元素

3.所有关键字都在叶子结点出现,包含了全量元素信息。

5.每个叶节点都带有指向下一个元素的指针,从而形成了一个有序链表。

提出一个相关的概念:卫星数据,在算法导论里,是指 一条纪录(一个对象中)中除了关键字key以外的其他数据。在B树中,中间节点和叶子节点都带有卫星数据,而在B+树中,只有叶节点带有卫星数据,中间节点只是索引,没有任何数据。

数据库的聚集索引(索引中键值的逻辑顺序决定了表中相应行的物理顺序)中,叶节点直接包含卫星数据,非聚集索引(索引的逻辑顺序与磁盘上行的物理存储顺序不同)中,叶节点含有指向叶节点的指针。

二:查找:

B+树大致上与B树一样,但是也有不同:

1. 间结点无卫星数据,磁盘页中可以存更多的元素。B+树相对高度更小,I/O次数更少。

2. B树查询需要最终找到叶子节点,B-树找到匹配元素即可

3. B树查找性能较差(最好情况是查根节点,最坏是查到叶子节点),B树每一次都稳定。

4. B树范围查询时,只能中序遍历。B+树在链表上遍历即可。

三:插入删除:

  与B树类似,不再赘述。

什么是B+树??的更多相关文章

  1. B树——算法导论(25)

    B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的, ...

  2. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  3. 再讲IQueryable<T>,揭开表达式树的神秘面纱

    接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...

  4. HDU1671——前缀树的一点感触

    题目http://acm.hdu.edu.cn/showproblem.php?pid=1671 题目本身不难,一棵前缀树OK,但是前两次提交都没有成功. 第一次Memory Limit Exceed ...

  5. 算法与数据结构(十一) 平衡二叉树(AVL树)

    今天的博客是在上一篇博客的基础上进行的延伸.上一篇博客我们主要聊了二叉排序树,详情请戳<二叉排序树的查找.插入与删除>.本篇博客我们就在二叉排序树的基础上来聊聊平衡二叉树,也叫AVL树,A ...

  6. [C#] C# 知识回顾 - 表达式树 Expression Trees

    C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

  7. bzoj3207--Hash+主席树

    题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现. ...

  8. bzoj1901--树状数组套主席树

    树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ...

  9. bzoj3932--可持久化线段树

    题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...

  10. jquery-treegrid树状表格的使用(.Net平台)

    上一篇介绍了DataTable,这一篇在DT的基础之上再使用jquery的一款插件:treegrid,官网地址:http://maxazan.github.io/jquery-treegrid/ 一. ...

随机推荐

  1. 利用信号量semaphore实现两个进程读写同步 Linux C

    这篇帖子主要是记录一下自己使用信号量遇到的坑. 首先是需求:创建两个进程A,B.A往buffer中写,B读.两个进程利用命名管道进行通信,并实现读写同步.即A写完后通知B读,B读完后通知A写. 如果A ...

  2. wireshark-1

    wireshark-1题目来源: 广西首届网络安全选拔赛题目描述:黑客通过wireshark抓到管理员登陆网站的一段流量包(管理员的密码即是答案). flag提交形式为flag{XXXX}附件解压后, ...

  3. 为什么在数据驱动的路上,AB 实验值得信赖?

    在线AB实验成为当今互联网公司中必不可少的数据驱动的工具,很多公司把自己的应用来做一次AB实验作为数据驱动的试金石. 文 | 松宝 来自 字节跳动数据平台团队增长平台 在线AB实验成为当今互联网公司中 ...

  4. spyeye手机监控最新版分享下载不用碰对方手机,所有聊天内容,照片等都能看见

    spyeye间谍眼介绍的非常详细,不但可以监控用户收发短信和通话记录,还可远程开启手机听筒,监听手机周围声音,实时监控用户的通话,并且利用GPS功能监测到手机用户所在位置,给用户安全隐私造成极大的威胁 ...

  5. 【C# IO 操作】使用StringWriter和StringReader的好处

    当你有一组应用程序接口(API)只允许用Writer或Reader作为输入,但你又想使用String,这时可以用StringWriter或StringReader. 假设有下面这样一个process方 ...

  6. npm install 报错:command failed git -c core.longpaths

    最近需要angularjs,从github上下载下来程序,在安装目录下执行命令 npm install(安装依赖包)时报错了.

  7. Linux查看进程的4种方法

    转至:https://www.cnblogs.com/hml-blog-com/p/11558369.html 进程是在 CPU 及内存中运行的程序代码,而每个进程可以创建一个或多个进程(父子进程). ...

  8. 经验分享:分析如何使程序在Linux下后台运行---Linux就该这么学!

    转至:https://www.cnblogs.com/maoju/p/13848740.html 一.为什么要使程序在后台执行   我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环 ...

  9. spring boot application.yml 常用基本配置

    1.Tomcat 配置 server: #设置请求端口 port: 8080 servlet: #指定 Tomcat的请求路径 context-path: /cl #设置 Tomcat 编码格式 en ...

  10. Goland sync.Map大白话解析

    Goland sync.Map大白话解析 代码解析链接:https://mp.weixin.qq.com/s/H5HDrwhxZ_4v6Vf5xXUsIg 建议对照参考链接代码食用 结构体 可以简单理 ...