Search notes:
Oracle SQL Plan operation: LOAD AS SELECT (TEMP SEGMENT MERGE)
create table tq84_range_partition (
id number,
grp varchar2(1) not null check (grp in ('A', 'B', 'C', 'D', 'E')),
val number
)
partition by range (grp) (
partition tq84_range_partition_A values less than ('B'),
partition tq84_range_partition_B values less than ('C'),
partition tq84_range_partition_C values less than ('D'),
partition tq84_range_partition_D values less than ('E'),
partition tq84_range_partition_E values less than ( maxvalue )
);
begin
dbms_random.seed(2808);
insert into tq84_range_partition
select
level,
chr(ascii('A') + mod(level, 5)),
dbms_random.value(100, 99999)
from
dual connect by level <= 1000 * 1000;
dbms_stats.gather_table_stats(user, 'tq84_range_partition');
-- commit;
end;
/
explain plan for
with
abc as (
select /*+ materialize */
grp
val
from
tq84_range_partition
where
grp in ('D', 'A')
)
select /*+ parallel */
*
from
abc;
select * from dbms_xplan.display(format => 'basic')
--
-- -----------------------------------------------------------------------------
-- | Id | Operation | Name |
-- -----------------------------------------------------------------------------
-- | 0 | SELECT STATEMENT | |
-- | 1 | TEMP TABLE TRANSFORMATION | |
-- | 2 | PX COORDINATOR | |
-- | 3 | PX SEND QC (RANDOM) | :TQ10000 |
-- | 4 | LOAD AS SELECT (TEMP SEGMENT MERGE)| SYS_TEMP_0FD9D66B8_E3058F9 |
-- | 5 | PX BLOCK ITERATOR | |
-- | 6 | TABLE ACCESS FULL | TQ84_RANGE_PARTITION |
-- | 7 | PX COORDINATOR | |
-- | 8 | PX SEND QC (RANDOM) | :TQ20000 |
-- | 9 | VIEW | |
-- | 10 | PX BLOCK ITERATOR | |
-- | 11 | TABLE ACCESS FULL | SYS_TEMP_0FD9D66B8_E3058F9 |
-- -----------------------------------------------------------------------------
drop table tq84_range_partition;