图:

1、B树的前四条规则呢主要是用来限定这个B树的孩子数。
每个节点的孩子数。还有这个B树的深度啊。

====================================

2、最后一条规定呢。
这是用来限定B树节点关键字数量以及大小了。

文:

平衡多路查找树。
那如果我们每个节点最多有m个孩子。
那么这样的数就是m阶B数。
咱们可以看到,该图便是一个三阶B树的样子。
当然,现实中呢讲的,所以每个节点的孩子数上限了,肯定是远大于三的。
每个存储块中,主要包含了关键字和指向孩子的指针。
那么最多能有几个孩子,取决于每个存储块的容量,以及数据库的相关配置。
所以通常情况下,这个m是很大的。
ok,咱们首先来看看B树的4个特征。
    第一,根节点,至少包括两个孩子。这个没什么好解释的,比较容易理解。
    第二呢。树中每个结点最多含有m个孩子,那这个m是大于或者等于2的。
这个就是咱们说的m阶树的含义了。
m取决于节点的容量,以及相关配置。
    第三呢。除根节点和叶节点外。
其他每个节点至少有cell(m)/2个孩子。
那其中,这个cell函数呢,表示取上线。
比如说像这里,我们刚刚的,这个mv3对吧。
那么m除以二等于1.5,那我们取他的上线,也就是cy5的上限呢。他就是2。
他并不是四舍五入哈。比如说等于1.2,他也是取得上线。
那每个非根非叶子节点呢至少具备俩个孩子。
就跟咱们看到的。这个四阶b树一样。
就跟这个商家B树一样。
那我们就来看看第4个。
      第四个定义呢?就是所有叶子节点呢,都位于同一层。
即叶子节点的高度呢,都是一样的。
那咱们通过这个树来回顾一下我们的这四个特征。
   第一,它的根节点呢?至少有两个孩子。
   第二,每个节点最多包含根尖数个孩子。
这里我们三间嘛。所以呢,他的孩子数量不能大于3。
并且呢,孩子数呢,也不能少于2。
是不能少于两个哈。不管你是几结束孩子数,并不能少要。
那同时呢。对于非跟非叶子节点来讲呢,它上面所具备的。这个孩子数呢,至少为m除以2的上限。
此外呢,所有的终端叶子节点呢,都位于同一层。
那这里呢?与其说是他的特征。
不如说是他必须遵守的一个约束。
遵守这样的约束目的只有一个,就是让每个索引块尽可能存储更多的信息。非常树的高度,尽可能减少弯腰使树。那么关于这点呢,大家可以细细去体会。
咱们再来看看它的最后一条约束。
       最后一个约束其实有三个子曰,素来组成。
假设每个非终端结点中包含有n个关键字信息。
那么我们看第一条,就是我们假设ki为这个非终端节点的这个关键字嘛。
i呢,是等于一或者报恩。
则我们的这个关键字就需要按照顺序升序进行排序。
也就是说ki减一呢,必须小于ki就拿咱们的,这个图来讲。
比如说我们这个ki这里呢,是k1。
可以用了,是12。
那ki简易呢,就是k1k那是八那八,那必须得比10小的是升序排列的。
ok,那咱们就来看看第二条不条。
关键字的个数n呢运行满足这个cell and am for your减一小于或等于nm。
n呢,要小于或等于m减1。
集说的是任意节点的关键资格是无上限呢。比他的孩子数上线少一个。
且对于非叶子节点来说呢,任何一个节点的关键字的个数比它的指向孩子的指针个数少一个我们可以看看图。
就是这里咱们的这个关键字的个数了。永远是比这个孩子的数少一个。
ok,咱们再来看看第三条。
非叶子节点的指针P1p2到pm其中P1指向关键字小于ke的指数。
什么意思呢,他就说的是某些恋。这周边的孩子节点里的关键字的值呢,均小于该节点。醉酒球员的关键字的值。
咱们可以看下图。
图里面呢?我们拿这个八来做例子。八十管件治好,那他把对应他左边的,这个指数里面的他的孩子里面的关键这个值呢,三头五呢,他都会小于八这是这么个意思。
咱们再来看它另外一条就是pm指向关键字。
大于km减一的指数。这个是什么意思呢。
就指的是该节点最右边的。这个孩子节点里的关键字的值呢,均大于该节点里所有关键字的值。
什么意思呢?我们来看看图。
就比如说这个节点里面,它的最右边的。这个孩子十三和15。
他这两个字呢。均大于这个节点里所有的关键字的值八二十万嘛。13日15呢,明显大于82。
咱们再来看看最后一条其他pi呢。指向关键字属于就要大于dki减一小于dki的。这个关键字的区间范围指数。
他是一个开区间的。那什么意思呢?就是该节点,其余的孩子节点里的关键字的值和大小。
均位于离该孩子节点之前。最近的两个关键词之间,它是一个开区间了。咱们可以跟他就拿这个pu为例啊。
皮尔,他指向的这两个关键词呢。九和十呢,是位于八和12的开区间范围之内的。
他就要表达这么一个意思。所以呢,他的这一左边和最右边以及中间呢。这些规定呢,我们也已经定好了。
咱们可以看到B树的前四条规则呢主要是用来限定这个B树的孩子数。
每个节点的孩子数。还有这个B树的深度啊。
而他的最后一条规定呢。
这是用来限定B树节点关键字数量以及大小了。
当我们要查找数据的时候,这个B树呢。他跟2叉查找树的产生效率呢,是以一样高效了。
比如说,咱们要查这个15。
十五在这里哈。那我们首先先从根部开始找,15比17要小。
因此呢,他就来到这个,P1里面p指向的是这个指数。
那这个节点里面呢我们由于这个失误是比八和12都要大的。因此呢,他就来到这个p3p上呢,就指向这个叶子节点了。
13号跟15家一起打,我们先找十三不是那才最终找到了15。
啊。因此呢,它的这个查找相应呢。同样是大陆的劳改。
我们呢?当数据发生变动的时候呢,必然会存在现有结构被打乱的情况。
那我们呢这个二叉查找树呢,它就会有可能被打完成线性的。
带有一定是,我们会有这五个规定存在。
所以呢,倍数就会有相应的策略。通过这个合并分裂上移下一节点。
来保持他的这个特征,使树远比我们的2叉树矮的多。
并且不会经过数据不断变动后,变成线性的。这种情况。
由于我们重点讲索引,所以具体的这些策略呢,以及它的实现了。大家可以珂下去了解一下。
面试的时候了,这类数据结构的实现,有时候也会作为面试官的利器来考大家的哦。
哦。

3-3 优化你的索引-运用B树相关推荐

  1. mysql索引优化规则_Mysql优化选择最佳索引规则

    索引的目的在于提高查询效率,其功能可类比字典,通过该索引可以查询到我们想要查询的信息,因此,选择建立好的索引十分重要,以下是为Mysql优化选择最佳索引的方法步骤: 1. 首先列出查询中所有使用的表, ...

  2. mysql优化-----多列索引的左前缀规则

    索引优化策略1:索引类型1.1B-tree索引 关注的是:Btree索引的左前缀匹配规则,索引在排序和分组上发挥的作用.注:名叫btree索引,大的方面看都用的二叉树.平衡树.但具体的实现上,各引擎稍 ...

  3. MySQL第10天:MySQL索引优化分析之索引介绍

    MySQL索引优化分析之索引简介 1.索引是什么? 2.索引优势.劣势 3.索引分类.基本语法 4.索引结构 5.哪些情况需要创建索引? 6.哪些情况不需要创建索引? ---------------- ...

  4. 数据库查询性能优化之利器—索引(二)

    数据库查询性能优化之利器-索引(二) 在前面一篇文章中谈到适当地建立索引能够大幅度地提升SQL语句查询速度,然而并不是在什么情况下都适合建立索引,下面来谈一下什么情况下适合建立索引.建立什么样的索引以 ...

  5. SQL优化 · 经典案例 · 索引篇

    Introduction 在这些年的工作之中,由于SQL问题导致的数据库故障层出不穷,下面将过去六年工作中遇到的SQL问题总结归类,还原问题原貌,给出分析问题思路和解决问题的方法,帮助用户在使用数据库 ...

  6. 用MySql的查询分析语法explain来优化查询和索引

    http://hi.baidu.com/wtnzone/item/beb83840a4971af4dd0f6c77 数据库最常见的操作就是查询了,我们经常要用"SELECT"语法对 ...

  7. mysql 组合索引 or_mysql索引优化实例(单列索引与组合索引)

    索引一般用于在数据规模大时对查询进行优化的一种机制,对于一般的查询来说,mysql会去遍历整个表,来查询符合要求的结果: 如果借助于mysql索引,mysql会将要索引的字段按照一定的算法进行处理,并 ...

  8. MySQL SQL优化之覆盖索引

    内容概要 利用主索引提升SQL的查询效率是我们经常使用的一个技巧,但是有些时候MySQL给出的执行计划却完全出乎我们的意料,我们预想MySQL会通过索引扫描完成查询,但是MySQL给出的执行计划却是通 ...

  9. MySQL 索引优化器选择索引的规则

    MySQL的优化器不是简单基于 规则 或 CBO(基于成本),而混合之用,但是倾向于基于成本优化为主的模式,但是一般都会根据统计信息,以及 SQL语句的成本,甚至服务器的空闲程度 而选择一个合适的计划 ...

最新文章

  1. 计算机科学精彩帖子收集
  2. 无人机寻迹要两个单片机吗_你知道要从哪两个方面选择硬质合金锯片吗?
  3. Vim 实用技术,第 1 部分: 实用技巧
  4. 剑指offer之树的子结构
  5. 快查电脑:开关机记录等(电脑使用痕迹)
  6. 禾匠榜店小程序商城V4独立版V4.0.25 前端+后端
  7. php将数组值用 分开,PHP将数组中的多个值替换为另一个数组
  8. 斗拱展开面积表_144996_河南省仿古建筑工程计价综合单价2009
  9. win10 mysql 远程访问_win10 docker部署mysql并启动远程连接
  10. centos 7 8安装quaartus 遇到的问题及解决方法
  11. jzoj3348. 【NOI2013模拟】秘密任务
  12. ReactJS基础(续)
  13. luaprofiler探索
  14. vs2015安装vs assist 教程
  15. 【IoT】 产品设计:结构设计之ABS塑料表面处理工艺
  16. [组图]手机病毒组合拳一箭双雕 手机PC均中招(转)
  17. 项目经理应该具备的四种能力
  18. 用技术赋能城市管理,景联文科技提供城市治理多场景数据采集服务!
  19. JAVA学习笔记五---函数
  20. math_@多元函数求导@全微分@偏导数@复合偏导

热门文章

  1. 用Ps将视频转为gif
  2. React:阻止默认事件
  3. svn使用教程_苹果svn使用教程
  4. ossim监控mysql_Ossim系统常见测试方法
  5. 四、Eureka注册中心集群配置
  6. 最大化利用Intel博锐技术
  7. Python头歌实训之列表
  8. prometheus常用函数表达式
  9. HTML5+CSS3高级动画的应用实践
  10. Confluent6.0平台搭建