B*树索引是最常用的数据库索引,一般所说的索引都是B*树索引
B*树索引的构造类似于二叉树,能根据键提供一行或一个行集的快速访问,通常只需要很少的读操作就能找到正确的行。
B*树索引的结构有可能如下图所示
这个树最底层的块称为叶子节点(leaf node)或叶子块(leaf block),其中分别包含各个索引建以及一个rowid(指向所索引的行)。叶子节点之上的内部块称为分支块(branch block)。这些节点用于在结构中实现导航。
有意思的是,索引的叶子节点实际上又构成了一个双向链表,执行索引区间扫描(值的有序扫描)也很容易,找到第一个值之后,我们不需要再在索引结构中导航,而只需根据需要,通过叶子节点向前或向后扫描就可以了。所以要满足诸如以下的谓词条件将相当简单:
where x between 20 and 30
Oracle发现第一个最小值大于或等于20的索引叶子块,然后水平地遍历叶子节点链表,直到命中一个大于30的值。
B*树索引中不存在非唯一(nonunique)条目。在一个非唯一索引中,Oracle会把rowid作为一个额外的列追加到键上,使得键唯一。在一个唯一索引中,根据你定义的唯一性,Oracle不会再向索引建增加rowid。
所有叶子块都应该在树的同一个层上,这一层的层号就称为索引的高度,这表示所有从索引的根块到叶子块的遍历都会访问同样数目的块。即索引是高度平衡的,大多数的B*树索引高度都是2或者3,即使索引中有数百万行记录,所以一般来说,在索引中找到一个键只需要执行2或3次I/O。随着基表的增长,通过索引访问数据的性能基本上不会有太大的恶化,因为只要索引高度不变化,读索引的I/O是相同的。而通过rowid访问数据行的效率也是相同,性能仅根据返回的数据量而变化。
相关推荐
Oracle B*树索引是数据库管理系统中用于快速查找数据的一种数据结构,尤其在Oracle数据库中扮演着重要角色。B*树(B-star tree)是B树的一个变种,它在B树的基础上进行了优化,以适应大规模数据存储和高效查询的需求...
1. **B*树索引**:这是最常见的索引类型,类似于二叉树结构,能高效地根据键值进行查找。B*树索引有以下几种子类型: - **索引组织表(Index-Organized Table, IOT)**:数据直接存储在索引结构中,适合主键访问...
- **B树索引(B-Tree Index)**: 最常见的索引类型,适用于等值查询,根据索引键的排序顺序查找数据。 - **位图索引(Bitmap Index)**: 适合于在含有大量重复值的列上,尤其是在进行多列组合查询时,将多个位图...
1. **B*Tree索引**: - B*Tree索引是Oracle中最常见的索引类型,其结构类似于二叉树,可以高效地处理高基数数据列,即具有大量不同值的列。这种索引适用于大部分常规查询场景,尤其是当检索的数据量小于总数据量的...
B树索引是最常见的索引类型,适用于等值查询。Oracle使用自平衡的B树结构存储索引键值,每个索引条目指向表中的一个数据块。 2. **位图索引(Bitmap Index)** 位图索引主要用于低基数(非唯一或重复值多)的列,...
首先,文档提到了B*树索引,这是最常见的索引类型,类似于二叉树但更为平衡。B*树索引允许快速查找、插入和删除操作,适用于大部分的查询场景。其中,索引组织表(Index-Organized Table, IOT)是一种特殊的B*树索引...
B-Tree(平衡树)索引是Oracle中最常用的一种索引类型,它主要用于快速定位数据行的位置。B-Tree索引的特点是能够高效地支持范围查询和等值查询。 **1. 选择创建B-Tree索引的原则** - **WHERE子句中的条件**: 在...
首先,索引分为几种主要类型,包括B树索引、位图索引、函数索引和全局唯一索引等。B树索引是最常见的一种,其内部结构由根块、分支块和叶子块组成。在提供的内容中,我们看到了类似B树结构的分布模式,这可能是在...
### B树索引简单实验知识点解析 #### 一、B树索引简介 在数据库管理系统中,索引是用于提高数据检索效率的重要工具之一。其中,B树索引是一种广泛应用于关系型数据库中的数据结构。B树(Balance Tree)是一种自...
1. **B*Tree索引**:这是最常见的索引类型,适用于高基数的列,通过键值直接定位ROWID,适合执行单行查找和范围查询。反向索引是B*Tree索引的一种变体,它通过反转字节来实现更均匀的索引分布,降低竞争。 2. **...
本文将详细介绍如何为一个核心大表(INFO_CUSTOMER)创建一个全局B树索引,并在此过程中尽可能减小对业务的影响。 #### 表信息及使用场景 - **数据库名称**:***DB1** - **表名**:INFO_CUSTOMER - **表规模**:...
- **B树索引**:最常见的索引类型,适用于各种查询场景。 - **位图索引**:适合于包含大量重复值的列,尤其是在进行大量选择操作时非常有效。 - **散列索引**:适用于简单的等值查询。 - **全局索引分区**:与分区表...
1. **B树索引**:这是最常见的索引类型,适用于频繁的查询操作。B树索引通过排序的数据结构存储键值,使得查找、插入和删除操作的时间复杂度保持在对数级别。Oracle默认创建的就是B树索引。 2. **位图索引**:位图...
1. **B*Tree索引**:B*Tree(B树)是最常见和广泛使用的索引类型,适用于高基数数据列,即包含大量不同值的列。它的结构类似于二叉树,由分支块和叶块组成。查询时,系统从根节点开始,逐级向下遍历,直到找到目标值...
在海量数据处理与高效查询需求日益增长的背景下,B*树作为一种优化过的B树,成为数据库系统中不可或缺的数据结构。它不仅支持高效的查找,还特别针对磁盘读取进行了优化,确保在大数据集中的查询性能。本文将深入...
在Oracle数据库中,最常用的索引类型是B树索引(B-tree index),它支持范围查询和精确匹配查询。此外,还有其他类型的索引如位图索引、散列索引等,但B树索引因其高效性而被广泛使用。 #### 二、索引结构与存储 1...