0

我认为通过让您知道我如何理解 Btree 索引的基本工作原理,您可以更好地了解我来自哪里。我不是 DBA,我是作为对数据结构有基本了解的外行来问这个问题的。

索引的基本思想是,它通过在搜索数据库时跳过大量记录来加快搜索速度。

AFAIK,二叉树数据结构,我假设 Btree 索引所基于的位置,通过将数据划分为节点来帮助我们在不扫描整个数据库的情况下进行搜索。对于过于简单的示例,从 A 到 M 开始的单词存储在左节点中,从 N 到 Z 开始的单词存储在树的第一级的右节点中。在这种情况下,当我们搜索单词“Jackfruit”时,它只会在左侧节点上搜索而跳过右侧节点,从而为我们节省大量时间和 IO。

从这个意义上说,位图索引如何让我们在搜索时不扫描整个数据库?如果没有,它如何加快搜索速度?还是只是为了压缩?

在此处输入图像描述

这里拍摄的图像

上图是位图的概念图。使用该结构,数据库如何查找行?它会扫描所有行吗?在二叉树中,您不必扫描所有内容这一事实正是它有助于加快搜索速度的方式。除了位图占用更少空间这一事实之外,我看不出任何解释数据库如何在使用位图搜索行方面获得优势。

4

2 回答 2

1

Btree 索引适用于键搜索(允许重复,但主要是列中的不同值,即 SSN)。当您有一些不同的值(如“性别”、“状态”、“颜色”等)时,位图索引会更好。

于 2016-07-01T01:26:55.057 回答
0

Oracle 位图索引与标准 b 树索引有很大不同。在位图结构中,创建了一个二维数组,其中索引表中的每一行对应一列。每列代表位图索引中的不同值。这个二维数组表示索引中的每个值乘以表中的行数。

有关更详细的说明,请参见http://www.dba-oracle.com/oracle_tips_bitmapped_indexes.htm 。

于 2016-07-01T04:02:27.430 回答