`
willwen
  • 浏览: 24433 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle B*树索引

 
阅读更多

        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访问数据行的效率也是相同,性能仅根据返回的数据量而变化。

 

 

  • 大小: 23 KB
分享到:
评论

相关推荐

    Oracle B*树索引内部机制及其应用的研究.pdf

    Oracle B*树索引内部机制及其应用的研究.pdf

    OracleB_树索引内部机制及其应用的研究

    Oracle数据库应用系统的性能优化是一项系统化的工程,涉及到数据库结构的各个方面。本文从B* 树索引入手, 分析了B* 树索引的结构及原理,阐明了如何正确合理地使用B* 树索引及其如何优化数据库系统的性能。

    B树索引的研究

    Oracle 索引研究

    oracle 三种索引

    oracle 三种索引的简单描述,位图、B树、全文索引。

    oracle使用索引与不使用索引的性能详析

    Oracle存储索引的数据结构是B*树。位图索引也是如此,仅仅只是是叶子节点不同B*数索引; 索引由根节点、分支节点和叶子节点组成。上级索引块包括下级索引块的索引数据,叶节点包括索引数据和确定行实际位置的rowid。...

    Oracle关于重建索引争论的总结

    索引重建是一个争论不休被不断热烈讨论的议题。... a、Oracle的B树索引随着时间的推移变得不平衡(误解)  b、索引碎片在不断增加  c、索引不断增加,删除的空间没有重复使用  d、索引 clustering factor (集群因

    Oracle数据库,索引的相关知识

    1)B树索引(考点):是应用最广泛的索引,也是Oracle数据库的默认索引类型。B树指的是平衡树(Balanced Tree),它是使用平衡算法来管理索引的。 适合B树索引的场合有: 表中存储的数据行数很多。 列中存储的数据的

    ORACLE检查找出损坏索引(Corrupt Indexes)的方法详解

    索引 索引与表一样,也属于段...从物理上说,索引通常可以分为:分区和非分区索引、常规B树索引、位图(bitmap)索引、翻转(reverse)索引等。其中,B树索引属于最常见的索引。 引言 本文主要给大家介绍了关于ORAC

    Oracle 11g Release (11.1) 索引底层的数据结构

    非索引的结构能满足所有需要,但自平衡的 B-树索引结构更能优化在大数据集上检索的性能。每个 B-树节点拥有多个键和指针。特定 B-树支持的一个节点中键的最大数量是那颗树的顺序。每个节点都具有一个潜在的 order+1 ...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    11.2.4 什么情况下应该使用B*树索引? 437 11.2.5 B*树小结 448 11.3 位图索引 448 11.3.1 什么情况下应该使用位图索引? 449 11.3.2 位图联结索引 453 11.3.3 位图索引小结 455 11.4 基于函数的索引 456 ...

    Bitmap索引

    B树索引是数据库中使用最多的索引,在数据量不太大时,它几乎就是索引的代名词。换句话说,在这种环境下,当人们说创建一个索引时,通常指的就是B树索引。当数据量不太大(比如几百万条记录以下)时,B树索引几乎...

    oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .

    一、索引简介 1、索引相当于目录 2、索引是通过一组排序后的索引键来取代默认的全表... 单列索引和复合索引 b.B树索引(create index时默认的类型) B树索引中所有叶子节点都具有相同的深度,所以不管查询条件如何,查

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。  拉里•埃里森  就业前景 从就业与择业的...

    ORACLE9i_优化设计与系统调整

    §13.2.3 使用B树索引- 166 §13.2.4 使用反向键索引- 166 §13.2.5 使用索引组织表 166 §13.3 使用范围索引 166 §13.4 使用簇 - 167 §13.5 使用Hash 簇 - 168 §13.5.1 何时创建Hash 簇 168 §13.5.2 创建Hash ...

    ORACLE教材

    B树索引(默认) 位图索引 函数索引 视图 序列 利用OEM操作 第九章:备份与恢复 脱机备份与恢复 联机备份与恢复 逻辑备份与恢复 第十章:sqlplus基础 设置SQL*PLUS的运行环境 格式化查询命令 第十一...

    oracle10g课堂练习I(1)

    B 树索引 7-28 位图索引 7-30 索引选项 7-32 创建索引 7-34 什么是视图 7-35 创建视图 7-36 序列 7-37 创建序列 7-38 使用序列 7-40 临时表 7-41 临时表:注意事项 7-43 数据字典:概览 7-44 数据字典...

    Oracle DBA workshop1 (中文版)

    前言 1 简介 课程目标1-2 建议日程表1-3 课程目标1-4 Oracle 产品和服务1-5 Oracle Database 10g:“g...B 树索引7-28 位图索引7-30 索引选项7-32 创建索引7-34 vi 什么是视图7-35 创建视图7-36 序列7-37 创建序列7-38

Global site tag (gtag.js) - Google Analytics