Oracle官方文档翻译《Database Concepts 23ai》第5章-索引和索引组织表-索引组织表概述(1)

5 Indexes and Index-Organized Tables

Overview of Index-Organized Tables

索引组织表概述

索引组织表是存储在B树索引结构的一种变体中的表。相比之下,堆组织表会将行插入到适合的位置。

在索引组织表中,行被存储在针对表的主键的索引中。B树中的每个索引条目也存储非键列的值。因此,索引即是数据,数据即是索引。应用程序可以像操作堆组织表一样,使用SQL语句操作索引组织表。

以索引组织表的进行类比,假设一位人力资源经理有一个装纸箱的书架。每个纸箱都标有一个编号——1、2、3、4等等——但这些纸箱不是按顺序放置在架子上的。相反,每个纸箱包含指向序列中下一个纸箱位置的指针。

每个纸箱中存放着包含员工记录的文件夹。文件夹按员工ID排序。员工 King 的ID是100,即最低ID,所以他的文件夹在纸箱1的底部。员工101的文件夹在100的上方,102在101的上方,依此类推,直到纸箱1装满为止。序列中的下一个文件夹在纸箱2的底部。

将文件夹按员工ID排序,可以有效地搜索文件夹,而无需维护一个单独的索引。假设用户请求员工107、120和122的记录。经理可以按顺序搜索文件夹并逐个进行检索,而不是在一个步骤中搜索索引并在另一个步骤中检索文件夹。

索引组织表通过主键或有效的前缀,提供对表行更快的访问。行的非键列存在于叶块中,避免了额外的数据块I/O。例如,员工100的薪水存储在索引行本身中。此外,由于行是按主键顺序存储的,通过主键或前缀进行范围访问,只涉及最小的块I/O。另一个好处是避免了一个单独的主键索引的空间开销。

索引组织表在相关数据片段必须存储在一起,或数据必须以特定的顺序物理地存储时非常有用。这种表的典型用途包括信息检索、空间数据和OLAP应用。

  • 索引组织表特征
    数据库系统通过操作B树索引结构来执行索引组织表的所有操作。

  • 带行溢出区的索引组织表
    创建索引组织表时,可以指定一个单独的段作为行溢出区。

  • 索引组织表的辅助索引
    辅助索引是索引组织表上的索引。

另请参阅:

  • Oracle Spatial and Graph Developer’s Guide 了解Oracle空间和图形的概述
  • Oracle Database Administrator’s Guide 学习如何管理索引组织表
  • Oracle Database SQL Language Reference 了解CREATE TABLE … ORGANIZATION INDEX的语法和语义
Index-Organized Table Characteristics

索引组织表特点

数据库系统通过操作B树索引结构来执行所有对索引组织表的操作。

下表总结了堆组织表与索引组织表之间的区别。

表5-6 堆组织表与索引组织表的比较

堆组织表索引组织表
rowid唯一标识一行。主键约束可以选择性地定义。主键唯一标识一行。必须定义主键约束。
允许在ROWID伪列中的物理rowid上构建辅助索引。允许在ROWID伪列中的逻辑rowid上构建辅助索引。
可以通过 rowid直接访问单个行。可以通过主键间接实现访问单个行。
顺序全表扫描按照一定的顺序返回所有行。完全索引扫描或快速完全索引扫描按照一定的顺序返回所有行。
可以与其他表一起存储在表簇中。不能存储在表簇中。
可以包含一个LONG数据类型的列和多个LOB数据类型的列。可以包含LOB列,但不能包含LONG列。
可以包含虚拟列(仅支持关系型堆表)。不能包含虚拟列。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值