我认为通过让您知道我如何理解 Btree 索引的基本工作原理,您可以更好地了解我来自哪里。我不是 DBA,我是作为对数据结构有基本了解的外行来问这个问题的。
索引的基本思想是,它通过在搜索数据库时跳过大量记录来加快搜索速度。
AFAIK,二叉树数据结构,我假设 Btree 索引所基于的位置,通过将数据划分为节点来帮助我们在不扫描整个数据库的情况下进行搜索。对于过于简单的示例,从 A 到 M 开始的单词存储在左节点中,从 N 到 Z 开始的单词存储在树的第一级的右节点中。在这种情况下,当我们搜索单词“Jackfruit”时,它只会在左侧节点上搜索而跳过右侧节点,从而为我们节省大量时间和 IO。
从这个意义上说,位图索引如何让我们在搜索时不扫描整个数据库?如果没有,它如何加快搜索速度?还是只是为了压缩?
上图是位图的概念图。使用该结构,数据库如何查找行?它会扫描所有行吗?在二叉树中,您不必扫描所有内容这一事实正是它有助于加快搜索速度的方式。除了位图占用更少空间这一事实之外,我看不出任何解释数据库如何在使用位图搜索行方面获得优势。