Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Index Full Scan Vs. Index Range Scan
RDBMS Version: 8.1.7.2
Operating System and Version: HP UX 11.0
I need some help understanding the access method that Oracle uses with Partitioned tables.
I have sql code (Please see below) that has a non-partitioned very small table "copa_mdo_srce_sys_map" and a very large partitioned table "FACT_DMNSN_Q3". Both tables, the index, and all partitions are analyzed using dbms_stats.
When I used nested loop join, there is range-scan on the large tables index and partitions are pruned, where as when I use hash join then full index scan occurs. Can someone explain why this is so different? It makes a lot of impact in run time and hash join performance is very bad.
(FYI - hash_area_size is 4194304 and hash_multiblock_io_count is 64. I have tried to change hash_area_size at session level but it has not impacted the method of index scan (full vs. range) on the large table.)
Thanks
Viral
NESTED LOOP
,fact_dmnsn_q3 fd
where fd.srce_sys_id = cm.srce_sys_id and cm.mdo_id = 'NA' and fd.due_perd = LAST_DAY(TO_DATE('&1', 'YYYYMM'))
Execution Plan
HASH JOIN
,fact_dmnsn_q3 fd
where fd.srce_sys_id = cm.srce_sys_id and cm.mdo_id = 'NA' and fd.due_perd = LAST_DAY(TO_DATE('&1', 'YYYYMM'));
Execution Plan
![]() |
![]() |