Statements that are most efficiently executed using a nested loop join use dynamic pruning. For example:
SQL> explain plan for select t.time_id, sum(s.amount_sold) from sales s, times t where s.time_id = t.time_id and t.fiscal_year = 2000 and t.fiscal_week_number = 3 group by t.time_id; Explained. SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------------- Plan hash value: 50737729 ---------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | ---------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 6 | 168 | 126 (4)| 00:00:02 | | | | 1 | HASH GROUP BY | | 6 | 168 | 126 (4)| 00:00:02 | | | | 2 | NESTED LOOPS | | 3683 | 100K| 125 (4)| 00:00:02 | | | |* 3 | TABLE ACCESS FULL | TIMES | 6 | 90 | 18 (0)| 00:00:01 | | | | 4 | PARTITION RANGE ITERATOR| | 629 | 8177 | 18 (6)| 00:00:01 | KEY | KEY | |* 5 | TABLE ACCESS FULL | SALES | 629 | 8177 | 18 (6)| 00:00:01 | KEY | KEY | ---------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - filter("T"."FISCAL_WEEK_NUMBER"=3 AND "T"."FISCAL_YEAR"=2000) 5 - filter("S"."TIME_ID"="T"."TIME_ID")
Oracle Database SQL Tuning Guide for more information about EXPLAIN PLAN
and how to interpret it