Search notes:
Oracle SQL Plan operation BITMAP CONVERSION FROM ROWIDS
The
plan operation BITMAP CONVERSION FROM ROWIDS
has one child row source which is, as far as I've observed, one of
create table tq84_tab (
val_1 number,
val_2 number,
pad varchar2(100)
);
insert into tq84_tab
select
mod(rownum, 1001),
mod(rownum, 10),
rpad('*', 100, '*')
from
dual connect by level <= 10010;
--
-- Create an «ordinary» and a bitmap index:
--
create index tq84_tab_ix_ord on tq84_tab(val_1);
create bitmap index tq84_tab_ix_bmp on tq84_tab(val_2);
begin
dbms_stats.gather_table_stats(user, 'tq84_tab');
end;
/
explain plan for
select * from tq84_tab where val_1 = 500 and val_2 = 1;
select * from table(dbms_xplan.display(format=>'basic'));
--
-- ---------------------------------------------------------------
-- | Id | Operation | Name |
-- ---------------------------------------------------------------
-- | 0 | SELECT STATEMENT | |
-- | 1 | TABLE ACCESS BY INDEX ROWID BATCHED| TQ84_TAB |
-- | 2 | BITMAP CONVERSION TO ROWIDS | |
-- | 3 | BITMAP AND | |
-- | 4 | BITMAP CONVERSION FROM ROWIDS | |
-- | 5 | INDEX RANGE SCAN | TQ84_TAB_IX_ORD |
-- | 6 | BITMAP INDEX SINGLE VALUE | TQ84_TAB_IX_BMP |
-- ---------------------------------------------------------------
drop table tq84_tab;