如何在数据库索引中使用二进制搜索

Posted

技术标签:

【中文标题】如何在数据库索引中使用二进制搜索【英文标题】:How binary search is used in database indexing 【发布时间】:2012-03-15 05:41:24 【问题描述】:

我知道二分查找的工作原理,但我想知道二分查找的实际用途... 我在网上搜索,发现主要用途是数据库索引,但我不明白二进制搜索如何帮助数据库索引。

【问题讨论】:

数据库索引使用b-trees,一种二叉树的泛化。这与使用二分搜索不同,尽管“分而治之”的一般思想适用于这两种情况。 【参考方案1】:

二分搜索计算每一步的下一个位置(中间点)。

DB 的二叉树预计算每一步的中间点,直到到达单个项目。将所有中间点填充到树中。查询时,DBMS 会查找树。

【讨论】:

【参考方案2】:

Binary search 允许您通过键快速查找记录,假设键已经排序。如果键的数量很大,则尤其如此。 32 次键读取足以在 20 亿个已排序键的集合中找到任何单个唯一键。

二分搜索之所以如此工作,是因为每次搜索尝试都会将要搜索的记录数减半。

也就是说,数据库通常使用其他类似binary tree 的数据结构,例如b-trees 或red-black trees 来执行索引。使用二叉树无需在搜索之前对键列表进行排序。

【讨论】:

【参考方案3】:

只要您有一个排序列表,您就可以使用二分搜索来有效地搜索列表。数据库索引是排序数据的数据结构。

【讨论】:

以上是关于如何在数据库索引中使用二进制搜索的主要内容,如果未能解决你的问题,请参考以下文章

时间序列数据库选型——本质是列存储,B-tree索引,抑或是搜索引擎中的倒排索引

如何使用递归创建二进制搜索

如何在 int 数组中查找元素的索引?

二进制搜索程序未打印正确的索引

如何在庞大的二进制数据中快速识别 1(索引)的连续范围?

微软数据库MSsql 强制索引 要加多个如何加 它的搜索机制是啥?