5 Indexes and Index-Organized Tables
Overview of Index-Organized Tables
Index-Organized Tables with Row Overflow Area
Logical Rowids and Physical Guesses
逻辑rowid和物理猜测
辅助索引使用逻辑rowid来定位表行。
逻辑rowid包括一个物理猜测,即索引条目首次创建时的物理rowid。Oracle数据库可以使用物理猜测直接探测索引组织表的叶块,跳过主键搜索。当行的物理位置发生变化时,即使逻辑rowid包含一个过时的物理猜测,它仍然有效。
对于堆组织表,通过辅助索引访问涉及对辅助索引的扫描,和一个读取行所在数据块的额外I/O。对于索引组织表,通过辅助索引的访问根据物理猜测的使用和准确性而变化:
-
没有物理猜测,访问涉及两次索引扫描:先扫描辅助索引,然后扫描主键索引。
-
使用物理猜测,访问取决于其准确性:
对于准确的物理猜测,访问包括辅助索引扫描和一个读取行所在数据块的额外I/O。
对于不准确的物理猜测,访问包括辅助索引扫描和一个I/O以获取错误的数据块(如猜测所指示的),然后通过主键值进行索引组织表的唯一索引扫描。
Bitmap Indexes on Index-Organized Tables
索引组织表上的位图索引
索引组织表上的辅助索引可以是位图索引。位图索引为每个索引键存储一个位图。
当位图索引存在于索引组织表上时,所有位图索引都使用堆组织的映射表。映射表存储索引组织表的逻辑rowid。每个映射表行为对应的索引组织表行存储一个逻辑rowid。
数据库使用搜索键访问位图索引。如果数据库找到该键,则将位图条目转换为物理rowid。对于堆组织表,数据库使用物理rowid访问基表。对于索引组织表,数据库使用物理rowid访问映射表,然后得到一个逻辑rowid,数据库再使用该逻辑rowid访问索引组织表。下图说明了对departments_iot表查询的索引访问。
图5-4 索引组织表上的位图索引
注意:
索引组织表中行的迁移,不会导致建立在该索引组织表上的位图索引无法使用。
另请参阅:
- “Rowids of Row Pieces” 了解物理和逻辑rowid之间的区别
往期内容:
Oracle官方文档翻译《Database Concepts 23ai》第5章-索引和索引组织表-索引组织表概述(1)