Mapping Bitmaps to Rowids Efficiently
Use SQL statements with the ALTER TABLE syntax to optimize the mapping of bitmaps to rowids. The MINIMIZE RECORDS_PER_BLOCK clause enables this optimization, and the NOMINIMIZE RECORDS_PER_BLOCK clause disables it.
When MINIMIZE RECORDS_PER_BLOCK is enabled, Oracle scans the table and determines the maximum number of records in any block and restricts this table to this maximum number. This enables bitmap indexes to allocate fewer bits for each block and results in smaller bitmap indexes. The block and record allocation restrictions that this statement places on the table are beneficial only to bitmap indexes. Therefore, Oracle does not recommend using this mapping on tables that are not heavily indexed with bitmap indexes.
Using Bitmap Indexes on Index-Organized Tables
The rowids used in bitmap indexes on index-organized tables are in a mapping table, not in the base table. The mapping table maintains a mapping of logical rowids (needed to access the index-organized table) to physical rowids (needed by the bitmap index code). Each index-organized table has one mapping table, used by all the bitmap indexes created on that table.
Initialization Parameters for Bitmap Indexing
The following initialization parameters affect the use of bitmap indexes:
- CREATE_BITMAP_AREA_SIZE affects memory allocated for bitmap creation.
- BITMAP_MERGE_AREA_SIZE affects memory used to merge bitmaps from an index range scan.
- SORT_AREA_SIZE affects memory used when inserting or updating bitmap indexes.
Bitmap Index Restrictions
Bitmap indexes have the following restrictions:
- For bitmap indexes with direct load, the SORTED_INDEX flag does not apply.
- Bitmap indexes are not considered by the rule-based optimizer.
- Bitmap indexes cannot be used for referential integrity checking.