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

5 Indexes and Index-Organized Tables

Overview of Index-Organized Tables

Index-Organized Table Characteristics

索引组织表特点

索引组织表可以通过在CREATE TABLE语句中添加COMPRESS ADVANCED LOW子句来使用高级低压缩。高级低压缩是一种自适应的前缀压缩形式,它会自动计算每个叶块的最佳前缀列数,从而在块级别实现最佳压缩,无需任何用户干预。这包括在适当情况下不进行任何压缩的可能性。这保证了负压缩不可能发生。观察到更高的压缩比,整体开销几乎可以忽略不计。

在优化器已经确定查询可以作为快速全表扫描执行时,对索引组织表进行的扫描可以被转移到Exadata Smart Scan(智能扫描)。这不需要任何用户干预。在索引组织表叶块上支持全单元侧处理,其中所有感关注的列都存储在叶块中。然而,在某些列存储在溢出段的情况下,智能扫描将不处理这些列,数据库将完成扫描。

图5-3展示了一个索引组织的departments表的结构。叶块包含表行,按主键顺序排列。例如,第一个叶块中的第一个值显示部门ID为20,部门名称为Marketing,经理ID为201,位置ID为1800。

图5-3 索引组织表

示例5-10 索引组织表的扫描

索引组织表将所有数据存储在相同的结构中,不需要存储rowid。如图5-3所示,索引组织表中的叶块1可能包含以下按主键顺序排列的条目:

20,Marketing,201,1800
30,Purchasing,114,1700

索引组织表中的叶块2可能包含以下条目:

50,Shipping,121,1500
60,IT,103,1400

按主键顺序对索引组织表行的扫描,会按以下顺序读取块:

1. Block 1
2. Block 2

示例5-11 堆组织表的扫描

为了对比堆组织表和索引组织表中的数据访问,假设堆组织departments表段的块1包含以下行:

50,Shipping,121,1500
20,Marketing,201,1800

块2包含同一个表的行如下:

30,Purchasing,114,1700
60,IT,103,1400

此堆组织表的B树索引叶块包含以下条目,第一个值是主键,第二个是rowid:

20,AAAPeXAAFAAAAAyAAD
30,AAAPeXAAFAAAAAyAAA
50,AAAPeXAAFAAAAAyAAC
60,AAAPeXAAFAAAAAyAAB

按主键顺序扫描表行会按以下顺序读取表段块:

1. Block 1
2. Block 2
3. Block 1
4. Block 2

因此,在这个例子中,块I/O的数量是索引组织表示例中的两倍。

另请参阅:

  • “Table Organization” 了解更多关于堆组织表的信息
  • “Introduction to Logical Storage Structures” 了解段和数据块之间的关系

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值