1. 每一种数据结构都有它的使命

正如链表可以构成缓存容器实现数据的暂时存放,B+、B- 树更多的被用来作为数据库搜索引擎的索引提高读取效率,例如:MySQL 的 InnonDB 用 B+ 树结构做索引;MySQL 的 MyISAM 引擎以及 MongoDB 用 B- 树作为索引。

1.1 为什么在数据库中使用索引?

假设您需要在文件中存储数字列表,然后在该列表中搜索给定的数字。最简单的解决方案是将数据存储在数组中,并在出现新值时附加值。但是,如果需要检查数组中是否存在给定值,则需要一个接一个地搜索所有数组元素,并检查给定值是否存在。如果足够幸运,您可以在第一个元素中找到给定的值。在最坏的情况下,该值可以是数组中的最后一个元素。我们可以将这种最坏情况表示为 O(n) 的渐近符号。这意味着,如果您的数组大小最大为“n”,则需要进行“n”次搜索才能在数组中找到给定值。

那如果是您,您会如何改善?最简单的解决方案是对数组进行排序,然后使用二进制搜索来找到值。每当您将值插入数组时,它都应保持顺序。从数组中间选择一个值开始搜索。然后将所选值与搜索值进行比较。如果所选值大于搜索值,则忽略数组的左侧,并在右侧搜索值,反之亦然。

在这里,我们尝试从数组 2、6、34、45、56、79 和 99 中中搜索 56,该键已按排序顺序。如果您进行常规搜索,则搜索将花费五个时间单位,因为该元素位于第五位置。但是在二进制搜索中,只需要进行三个搜索。

是不是看起来很熟悉?这其实就是一棵二

万家杨柳青烟里:B+、B- 树的应用场景相关推荐

  1. matlab编程实现二进制树搜索,binary-tree-collision-code 射频识别技术里的二进制树碰撞代码,防 能力 matlab 238万源代码下载- www.pudn.com...

    文件名称: binary-tree-collision-code下载 收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 794 KB 上传时间: 2013-04-22 ...

  2. 常见的树以及树的应用场景

    宏观角度树主要分为:有序树和无序树 无序树:严格来讲,因为无序树不便查找的特性,所以在我们日常生产过程中应用场景非常有限,所以在此不作为我们今天的讲解重点. 有序树 常见的有序树 哈夫曼树 俗称霍夫曼 ...

  3. 前缀树是什么 前缀树的使用场景

    前缀树的概述 前缀树又名字典树,单词查找树,Trie树,是一种多路树形结构,是哈希树的变种,和hash效率有一拼,是一种用于快速检索的多叉树结构. 典型应用是用于统计和排序大量的字符串(但不仅限于字符 ...

  4. Angular 应用里的摇树优化 - tree shaking

    Tree Shakeable Providers and Services in Angular Angular 最近推出了一项新功能,Tree Shakeable Providers. Tree S ...

  5. Word2Vec里实现Huffman树

    word2vec里是拿数组实现word2vec,效率很高,在学校里经常见到的是递归迭代实现Huffman树,这对于处理大量叶子节点的问题不是一个最佳方法. 数组法: #include <stdi ...

  6. JAVA里点击树与表格结合,javaswing中的表格(jtable)和树(jtree)组件使用实例.doc

    javaswing中的表格(jtable)和树(jtree)组件使用实例.doc JAVASWING中的表格JTABLE和树JTREE组件使用实例这篇文章主要介绍了JAVASWING中的表格JTABL ...

  7. 园子里关于罗辑树与视觉树的文章

    http://www.cnblogs.com/YilingLai/archive/2006/12/22/600279.html 转载于:https://www.cnblogs.com/refeiner ...

  8. 精选实践 | 爱奇艺实用数据库选型树:不同场景如何快速选择数据库?

    作者 | 郭磊涛 爱奇艺数据库和中间件负责人 TiDB User Group Ambassador 来源 | 授权转载自AskTUG 本文系 TUG 线下活动 "不同业务场景下的数据库技术选 ...

  9. 【精选实践】爱奇艺实用数据库选型树:不同场景如何快速选择数据库?

    原文来源: https://tidb.net/blog/6e38a396 作者:郭磊涛,爱奇艺数据库和中间件负责人,TiDB User Group Ambassador.本文系 TUG 北京区 9 月 ...

最新文章

  1. php首尾空格,php 去掉 头尾   空格 2种方法
  2. python3.6.0怎么安装pip_python3.6环境安装+pip环境配置教程图文详解
  3. K折交叉验证(StratifiedKFold与KFold比较)
  4. 数据中心采用液体冷却的障碍
  5. 检索数据_14_返回不重复的记录
  6. 转载|网络编程中阻塞式函数的底层逻辑
  7. .NET:如何让线程支持超时?
  8. Ajax表格控件实现
  9. java实验6 词频统计_java实训一——词频统计
  10. centos7设置静态IP地址
  11. python建筑工程中的应用_Python最佳工程实践,建立一个完美的工程项目
  12. 微信小程序云开发教程-JavaScript入门(5)-函数异步同步
  13. Semaphore源码解读
  14. pg数据库多表查询(inner)和级联查询
  15. YOLOV5目标检测-后处理NMS(非极大值抑制)
  16. 运放虚短虚断的成立条件
  17. js原生实现图片爆炸效果
  18. linux测试上下行最大网速和实时网速
  19. P9813驱动RGB灯珠
  20. btrfs + snapper快照使用

热门文章

  1. Windbg MESC.dll 加载问题 The call to LoadLibrary(winext/MSEC.dll) failed, Win32 error 0n126
  2. c语言小数除于整数怎么运算,C#:将int除以100
  3. cocos2dx android 爱贝支付平台接入记录
  4. 巴林王国之后,爱贝带移动支付杀入阿曼苏丹国
  5. 【Metaverse系列一】元宇宙的奥秘
  6. 计算机毕业设计指北 基于SSH+MySQL的万圣博管理系统
  7. 在html中页面打开次数计算,实现页面访问次数统计
  8. Java连接Mysql(JDBC)
  9. 江湖救急1—win10系统读不出u盘
  10. NNDL 实验三 线性模型