1. 每一种数据结构都有它的使命
正如链表可以构成缓存容器实现数据的暂时存放,B+、B- 树更多的被用来作为数据库搜索引擎的索引提高读取效率,例如:MySQL 的 InnonDB 用 B+ 树结构做索引;MySQL 的 MyISAM 引擎以及 MongoDB 用 B- 树作为索引。
1.1 为什么在数据库中使用索引?
假设您需要在文件中存储数字列表,然后在该列表中搜索给定的数字。最简单的解决方案是将数据存储在数组中,并在出现新值时附加值。但是,如果需要检查数组中是否存在给定值,则需要一个接一个地搜索所有数组元素,并检查给定值是否存在。如果足够幸运,您可以在第一个元素中找到给定的值。在最坏的情况下,该值可以是数组中的最后一个元素。我们可以将这种最坏情况表示为 O(n) 的渐近符号。这意味着,如果您的数组大小最大为“n”,则需要进行“n”次搜索才能在数组中找到给定值。
那如果是您,您会如何改善?最简单的解决方案是对数组进行排序,然后使用二进制搜索来找到值。每当您将值插入数组时,它都应保持顺序。从数组中间选择一个值开始搜索。然后将所选值与搜索值进行比较。如果所选值大于搜索值,则忽略数组的左侧,并在右侧搜索值,反之亦然。