m

The EXPLAIN PLAN results let you determine whether the
optimizer selects a particular execution plan, such as, nested
loops join. It also helps you to understand the optimizer
decisions, such as why the optimizer chose a nested loops join
instead of a hash join, and lets you understand the
performance of a query.

m

The EXPLAIN PLAN statement displays execution plans
chosen by the Oracle optimizer for SELECT, UPDATE,
INSERT, and DELETE statements. A statement's execution
plan is the sequence of operations Oracle performs to run the
statement

m

An execution plan includes an access path for each table that
the statement accesses and an ordering of the tables (the join
order) with the appropriate join method.

m

To execute a SQL statement, Oracle might need to perform
many steps. Each of these steps either retrieves rows of data
physically from the database or prepares them in some way for
the user issuing the statement. The combination of the steps
Oracle uses to execute a statement is called an execution plan.

§     .

  .

    § §§ !""#  !  !   $ !"# "!   %&§§ '()* +"# .""#  +  .  &  .

 #  .

   .

. / 0  .

  .    1.  #2#  23!3!45466- §   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   .

 ! - '&) ' ./% 0 "$ )"! &) *)  %. 1  02%23 "   - ./% %   &( '!& &) *(  %.          ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ! "#$ "" "  %  ! "#$ "" &  %  ! "'" (") *! +  . 1  %2%23 "   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  4 . %. %.

5  .

 .

5 6  .

 7 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !ÿ 5 8 99:9 ."! )ÿ 4499:902%9<909:902%9 (ÿ 4499:9%  2%9<9%9:9%  2%= .2%9.

. predefined formats. m The DBMS_XPLAN package supplies below table functions: è ë  : To format and display the contents of a plan table è ë   : To format and display the contents of the execution plan of any loaded cursor.m The DBMS_XPLAN package provides an easy way to display the output of the EXPLAIN PLAN command in several.

ë  .

statement_id IN VARCHAR2 DEFAULT NULL.  m This table function displays the contents of the plan table. format IN VARCHAR2 DEFAULT 'TYPICALµ ). . m  ëë  ( table_name IN VARCHAR2 DEFAULT 'PLAN_TABLE'.

#  „ „    .

   7§! .    .

.

  .

.  .  #.

§ „ .   7§ „ .  .  .3  .

   . .

 #  „ „ .  .  .

 # .

  .

    .

  3! .    .

.

  .

.  .

 .

§      .

     .        .! .

   ..

  .

 ..

            .

  .8.  .

 8 9 „ „ „ „ 79+   .  .

.   .

:: .

  +! .

 #" ! .

    59.

   .

 +   ..

   .  8 .

    /!  !      .

     . 8# 9$ 8 .

 .

   /  .       8 2. 6 §905   .     .58   " .

  .

     ! 8. . .

     .

PROJECT_ID = 1001 AND TRUNC (SYSDATE) BETWEEN NVL (PROJ. 'MM-DD-YYYY') ) AND NVL (PROJ.SEGMENT1. TASK. TO_DATE ('01-01-1900'.TEMPLATE_END_DATE_ACTIVE. PROJ.PROJECT_ID = PROJ.TASK_NUMBER. PROJ.TEMPLATE_START_DATE_ACTIVE.NAME FROM PA.PA_TASKS TASK WHERE 1 = 1 AND PROJ.PROJECT_ID . TRUNC (SYSDATE) ) AND TASK. PA.PA_PROJECTS_ALL PROJ.m      ! "    #  $% &#' (# # ( ! )    ))*   Example (a) ± Using Explain Plan m m m m m m m m m m m SELECT TASK.TASK_NAME.

.

 Display the plan using the DBMS_XPLAN.m Example (b) ± Displaying a Plan Table Using m (a) DBMS_XPLAN.DISPLAY table function select * from table(à  à  .DISPLAY m  + Execute an explain plan command on a SELECT statement: EXPLAIN PLAN FOR select««««««««[query used above] m m m m  .

   .

TO_DATE(' 1900-01-01 00:00:00'.m *# "    # !--(.TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@!)) 3 ."TEMPLATE_START_DATE_ACTIVE".filter(NVL("PROJ".access("TASK".access("PROJ"."PROJECT_ID"=1001) 5 . 'syyyy-mm-dd hh24:mi:ss'))<=TRUNC(SYSDATE@!) AND NVL("PROJ"."PROJECT_ID"=1001) ."TEMPLATE_END_DATE_ACTIVE".    m PLAN_TABLE_OUTPUT m Plan hash value: 3336623817 m m m m m m m m m m m -------------------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 17 | 1156 | 4 (0)| 00:00:01 | | 1 | NESTED LOOPS | | 17 | 1156 | 4 (0)| 00:00:01 | |* 2 | TABLE ACCESS BY INDEX ROWID| PA_PROJECTS_ALL | 1 | 42 | 1 (0)| 00:00:01 | |* 3 | INDEX UNIQUE SCAN | PA_PROJECTS_U1 | 1 | | 0 (0)| 00:00:01 | | 4 | TABLE ACCESS BY INDEX ROWID| PA_TASKS | 17 | 442 | 3 (0)| 00:00:01 | |* 5 | INDEX RANGE SCAN | PA_TASKS_N8 | 17 | | 1 (0)| 00:00:01 | --------------------------------------------------------------------------------------------------------------------------- m m m Predicate Information (identified by operation id): --------------------------------------------------- m m m m m m 2 .

ë   .

DISPLAY_CURSOR ( sql_id IN VARCHAR2 DEFAULT NULL.  m This table function displays the explain plan of any cursor loaded in the cursor cache.  m DBMS_XPLAN. format IN VARCHAR2 DEFAULT 'TYPICALµ ). child_number IN NUMBER DEFAULT NULL. .

<  .

  „ .  . # .

 +. ..

    ..

  .

 „ 5  8 .

   8#< / .

§ „    8!.  =>.. +=>.

  .

 +.§= .   .  . =>§ „ .

    .  3 .

.

  .

 ..

     # .

   #  „ .

 .# .

  ! .    .

  .    .

/ .

  <        „ .

.

 # # .    . <    ..

8.  .  .

 .

  .

8  .   .

 .

  4+54! . #.

  .  !474!454!4§444  8        :     .

  9 „ 3 9+   .

  .      .

   . .

   „ 3 9+   .

.     . .  // /       .    .

     . .         43 443 4# .

  /         .

 .

 ?    4    84   44 .

PA_PROJECTS_ALL PROJ.Example (a) ± Using Display_Cursor m m m m m m m m m m m m SELECT /* abc */ TASK.PA_TASKS TASK WHERE 1 = 1 AND PROJ.PROJECT_ID = 1001 AND TRUNC (SYSDATE) BETWEEN NVL (PROJ. PROJ. PA.TEMPLATE_END_DATE_ACTIVE.TEMPLATE_START_DATE_ACTIVE.TASK_NAME. PROJ.TASK_NUMBER.NAME FROM PA.SEGMENT1. TASK. TRUNC (SYSDATE) ) AND TASK. 'MM-DD-YYYY') ) AND NVL (PROJ. TO_DATE ('01-01-1900'.PROJECT_ID = PROJ.PROJECT_ID .

Step 1: Execute the query SELECT U  U .

  Step 2: Get sql_id and child_number for the preceding statement: §§ < !.

  $8> < . # ! <  ! < .

  <  04@#@4 Step 3: SELECT * FROM TABLE (ë  ë.

  àà    ! .

TRUNC (SYSDATE) ) AND TASK.PA_PROJECTS_ALL PROJ.SEGMENT1. 'MM-DD-YYYY') ) AND NVL (PROJ.SEL$1 / PROJ@SEL$1 4 .TEMPLATE_END_DATE_ACTIVE.PA_TASKS TASK WHERE 1 = 1 AND PROJ.SEL$1 / TASK@SEL$1 5 .PLAN_TABLE_OUTPUT SQL_ID 1hcqg71hwa8cc. TO_DATE ('01-01-1900'. TASK. PA.PROJECT_ID = PROJ.PROJECT_ID Plan hash value: 3336623817 ------------------------------------------------------------------------------------------------| Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | ------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | | | 4 (100)| | | 1 | NESTED LOOPS | | 17 | 1156 | 4 (0)| 00:00:01 | |* 2 | TABLE ACCESS BY INDEX ROWID| PA_PROJECTS_ALL | 1 | 42 | 1 (0)| 00:00:01 | |* 3 | INDEX UNIQUE SCAN | PA_PROJECTS_U1 | 1 | | 0 (0)| | | 4 | TABLE ACCESS BY INDEX ROWID| PA_TASKS | 17 | 442 | 3 (0)| 00:00:01 | |* 5 | INDEX RANGE SCAN | PA_TASKS_N8 | 17 | | 1 (0)| 00:00:01 | ------------------------------------------------------------------------------------------------Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------1 .SEL$1 / TASK@SEL$1 .TASK_NAME.SEL$1 2 .TEMPLATE_START_DATE_ACTIVE.PROJECT_ID = 1001 AND TRUNC (SYSDATE) BETWEEN NVL (PROJ.NAME FROM PA. PROJ. PROJ. child number 0 ------------------------------------SELECT /* abc*/ TASK.TASK_NUMBER.SEL$1 / PROJ@SEL$1 3 .

"PROJECT_ID"=1001) Column Projection Information (identified by operation id): ----------------------------------------------------------1 . "TASK". "TASK".ROWID[ROWID.25].20] 2 ."PROJ".filter((NVL("PROJ".ROWID[ROWID.25]."PROJECT_ID"=1001) 5 ."TASK"."NAME"[VARCHAR2."TEMPLATE_START_DATE_ACTIVE".TO_DATE(' 1900-01-01 00:00:00'. at session or system level ."NAME"[VARCHAR2."PROJ"."TASK_NUMBER"[VARCHAR2.10] 4 .25].30]. These are only collected when: * hint 'gather_plan_statistics' is used for the statement or * parameter 'statistics_level' is set to 'ALL'.2."TASK_NUMBER"[VARCHAR2.10] Note ----.25] 3 ."PROJ"."TASK_NAME"[VARCHAR2."TASK_NAME"[VARCHAR2. "PROJ"."SEGMENT1"[VARCHAR2.0."SEGMENT1"[VARCHAR2. "PROJ".30].TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@!))) 3 .Outline Data ------------/*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('10. 'syyyy-mm-dd hh24:mi:ss'))<=TRUNC(SYSDATE@!) AND NVL("PROJ"."PROJECT_ID")) INDEX_RS_ASC(@"SEL$1" "TASK"@"SEL$1" ("PA_TASKS"."TEMPLATE_END_DATE_ACTIVE".20] 5 ."PM_TASK_REFERENCE")) LEADING(@"SEL$1" "PROJ"@"SEL$1" "TASK"@"SEL$1") USE_NL(@"SEL$1" "TASK"@"SEL$1") END_OUTLINE_DATA */ Predicate Information (identified by operation id): --------------------------------------------------2 .access("PROJ"."TASK".Warning: basic plan statistics not available. "TASK".access("TASK"."PROJECT_ID" "PA_TASKS".5') OPT_PARAM('_b_tree_bitmap_plans' 'false') OPT_PARAM('_fast_full_scan_enabled' 'false') OPT_PARAM('_index_join_enabled' 'false') ALL_ROWS OUTLINE_LEAF(@"SEL$1") INDEX_RS_ASC(@"SEL$1" "PROJ"@"SEL$1" ("PA_PROJECTS_ALL".

TRUNC (SYSDATE) ) AND TASK. TASK. PROJ.PA_PROJECTS_ALL PROJ.TASK_NUMBER.NAME FROM PA.PA_TASKS TASK WHERE 1 = 1 AND PROJ. TO_DATE ('01-01-1900'.PROJECT_ID = PROJ.01 | 3| |* 5 | INDEX RANGE SCAN | PA_TASKS_N8 | 1 | 7 |00:00:00.TEMPLATE_END_DATE_ACTIVE.TEMPLATE_START_DATE_ACTIVE.01 | 6| | 1 | NESTED LOOPS | | 1 | 7 |00:00:00. 'MM-DD-YYYY') ) AND NVL (PROJ. PROJ.01 | |* 3 | INDEX UNIQUE SCAN | PA_PROJECTS_U1 | 1 | 1 |00:00:00.PROJECT_ID = 1001 AND TRUNC (SYSDATE) BETWEEN NVL (PROJ. child number 0 ------------------------------------SELECT /* abc*/ /*+ GATHER_PLAN_STATISTICS */ TASK.TASK_NAME. PA.01 | 2| | 4 | TABLE ACCESS BY INDEX ROWID| PA_TASKS | 1 | 7 |00:00:00. 2 345 6*2) ** *  43 PLAN_TABLE_OUTPUT SQL_ID 4azc9hf0kzg5g.01 | 6| |* 2 | TABLE ACCESS BY INDEX ROWID| PA_PROJECTS_ALL | 1 | 1 |00:00:00.PROJECT_ID Plan hash value: 3336623817 ------------------------------------------------------------------------------------------------| Id | Operation | Name | Starts | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 7 |00:00:00.SEGMENT1.01 | 2| ------------------------------------------------------------------------------------------------- 3| .)$ - /&0 1 .

SEL$1 2 .SEL$1 / TASK@SEL$1 5 .SEL$1 / PROJ@SEL$1 3 .5') OPT_PARAM('_b_tree_bitmap_plans' 'false') OPT_PARAM('_fast_full_scan_enabled' 'false') OPT_PARAM('_index_join_enabled' 'false') ALL_ROWS OUTLINE_LEAF(@"SEL$1") INDEX_RS_ASC(@"SEL$1" "PROJ"@"SEL$1" ("PA_PROJECTS_ALL"."PROJECT_ID"=1001) .TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@!))) 3 .access("TASK".SEL$1 / PROJ@SEL$1 4 .SEL$1 / TASK@SEL$1 Outline Data ------------/*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('10."PROJECT_ID" "PA_TASKS"."PROJECT_ID")) INDEX_RS_ASC(@"SEL$1" "TASK"@"SEL$1" ("PA_TASKS"."PM_TASK_REFERENCE")) LEADING(@"SEL$1" "PROJ"@"SEL$1" "TASK"@"SEL$1") USE_NL(@"SEL$1" "TASK"@"SEL$1") END_OUTLINE_DATA */ Predicate Information (identified by operation id): --------------------------------------------------2 .TO_DATE(' 1900-01-01 00:00:00'.0."PROJECT_ID"=1001) 5 .Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------1 .2. 'syyyy-mm-dd hh24:mi:ss'))<=TRUNC(SYSDATE@!) AND NVL("PROJ"."TEMPLATE_START_DATE_ACTIVE".access("PROJ"."TEMPLATE_END_DATE_ACTIVE".filter((NVL("PROJ".

m )$ - /0 m ))* 4 .

PA_PROJECTS_ALL PROJ.TASK_NAME. PROJ. PA.<!(:7= = 7-- - >( 5 700 ? PLAN_TABLE_OUTPUT SQL_ID byc2atjb80w2z. TASK.PROJECT_ID = 1001 AND TRUNC (SYSDATE) BETWEEN NVL (PROJ.PROJECT_ID = PROJ.PROJECT_ID Plan hash value: 3336623817 -------------------------------------------------------| Id | Operation | Name | -------------------------------------------------------| 0 | SELECT STATEMENT | 1 | NESTED LOOPS | | | | |* 2 | TABLE ACCESS BY INDEX ROWID| PA_PROJECTS_ALL | |* 3 | INDEX UNIQUE SCAN | PA_PROJECTS_U1 | | 4 | TABLE ACCESS BY INDEX ROWID| PA_TASKS |* 5 | INDEX RANGE SCAN | PA_TASKS_N8 | | -------------------------------------------------------Cont« .  *) /ëë   /789:%.PA_TASKS TASK WHERE 1 = 1 AND PROJ.TEMPLATE_START_DATE_ACTIVE. PROJ.TEMPLATE_END_DATE_ACTIVE.TASK_NUMBER. TRUNC (SYSDATE) ) AND TASK. child number 0 ------------------------------------SELECT /* bambo*/ TASK.SEGMENT1. 'MM-DD-YYYY') ) AND NVL (PROJ. TO_DATE ('01-01-1900'.NAME FROM PA.

These are only collected when: * hint 'gather_plan_statistics' is used for the statement or * parameter 'statistics_level' is set to 'ALL'."TEMPLATE_END_DATE_ACTIVE"."PROJECT_ID"=1001) Note ----."TEMPLATE_START_DATE_ACTIVE"."PROJECT_ID"=1001) 5 .Predicate Information (identified by operation id): --------------------------------------------------2 .TO_DATE(' 1900-01-01 00:00:00'. 'syyyy-mm-dd hh24:mi:ss'))<=TRUNC(SYSDATE@!) AND NVL("PROJ".access("TASK". at session or system level .TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@ ! ))) 3 .Warning: basic plan statistics not available.filter((NVL("PROJ".access("PROJ".

01 | 6| |* 2 | TABLE ACCESS BY INDEX ROWID| PA_PROJECTS_ALL | 1 | 1 |00:00:00.access("PROJ".PROJECT_ID = PROJ.TASK_NUMBER.NAME FROM PA.PROJECT_ID = 1001 AND TRUNC (SYSDATE) BETWEEN NVL (PROJ. 'syyyy-mm-dd hh24:mi:ss'))<=TRUNC(SYSDATE@!) AND NVL("PROJ".01 | 2| | 4 | TABLE ACCESS BY INDEX ROWID| PA_TASKS | 1 | 7 |00:00:00.01 | 2| ------------------------------------------------------------------------------------------------- 3| Predicate Information (identified by operation id): --------------------------------------------------2 . PROJ.PROJECT_ID Plan hash value: 3336623817 ------------------------------------------------------------------------------------------------| Id | Operation | Name | Starts | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 7 |00:00:00.access("TASK". PA."PROJECT_ID"=1001) .)$ - /0 1 . TASK.TO_DATE(' 1900-01-01 00:00:00'. PROJ. 'MM-DD-YYYY') ) AND NVL (PROJ.TASK_NAME.01 | 6| | 1 | NESTED LOOPS | | 1 | 7 |00:00:00.SEGMENT1.TEMPLATE_START_DATE_ACTIVE.01 | |* 3 | INDEX UNIQUE SCAN | PA_PROJECTS_U1 | 1 | 1 |00:00:00.PA_PROJECTS_ALL PROJ.PA_TASKS TASK WHERE 1 = 1 AND PROJ."PROJECT_ID"=1001) 5 . 2 345 6*2) ** *  43 PLAN_TABLE_OUTPUT SQL_ID 7quur9z2hcc8b.TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@!))) 3 . TO_DATE ('01-01-1900'.TEMPLATE_END_DATE_ACTIVE. TRUNC (SYSDATE) ) AND TASK. child number 0 ------------------------------------SELECT /* bambo*/ /*+ GATHER_PLAN_STATISTICS */ TASK."TEMPLATE_END_DATE_ACTIVE"."TEMPLATE_START_DATE_ACTIVE".filter((NVL("PROJ".01 | 3| |* 5 | INDEX RANGE SCAN | PA_TASKS_N8 | 1 | 7 |00:00:00.

PROJECT_ID = PROJ.TASK_NUMBER.PROJECT_ID = 1001 AND TRUNC (SYSDATE) BETWEEN NVL (PROJ.NAME FROM PA.TEMPLATE_START_DATE_ACTIVE. TO_DATE ('01-01-1900'.PROJECT_ID m m m m m m m m m m m Plan hash value: 3336623817 m m m m m m m m m m m -------------------------------------------------------| Id | Operation | Name | -------------------------------------------------------| 0 | SELECT STATEMENT | | | 1 | NESTED LOOPS | | |* 2 | TABLE ACCESS BY INDEX ROWID| PA_PROJECTS_ALL | |* 3 | INDEX UNIQUE SCAN | PA_PROJECTS_U1 | | 4 | TABLE ACCESS BY INDEX ROWID| PA_TASKS | |* 5 | INDEX RANGE SCAN | PA_TASKS_N8 | -------------------------------------------------------- m m m Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- m m m m 1 .PA_TASKS TASK WHERE 1 = 1 AND PROJ. PA.DISPLAY_CURSOR ('d5k3znj9dfaw3'.PA_PROJECTS_ALL PROJ.SEL$1 / TASK@SEL$1 +predicate')) . child number 0 ------------------------------------SELECT /* saboo */ TASK. PROJ.TEMPLATE_END_DATE_ACTIVE.SEGMENT1.SEL$1 / PROJ@SEL$1 4 . TRUNC (SYSDATE) ) AND TASK.SEL$1 / PROJ@SEL$1 3 .m )$ - /0 m m SELECT * FROM TABLE (DBMS_XPLAN.TASK_NAME. 'MM-DD-YYYY') ) AND NVL (PROJ.SEL$1 2 . . PROJ. NULL. TASK. 'allstats last -rows +alias +outline m PLAN_TABLE_OUTPUT m SQL_ID 1fd86xmu1swwt.

Outline Data ------------/*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('10."TEMPLATE_START_DATE_ACTIVE"."TEMPLATE_END_DATE_ACTIVE"."PM_TASK_REFERENCE")) LEADING(@"SEL$1" "PROJ"@"SEL$1" "TASK"@"SEL$1") USE_NL(@"SEL$1" "TASK"@"SEL$1") END_OUTLINE_DATA */ Predicate Information (identified by operation id): --------------------------------------------------2 ."PROJECT_ID" "PA_TASKS".TO_DATE(' 1900-01-01 00:00:00'.2.Warning: basic plan statistics not available. These are only collected when: * hint 'gather_plan_statistics' is used for the statement or * parameter 'statistics_level' is set to 'ALL'.TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@! ))) 3 .5') OPT_PARAM('_b_tree_bitmap_plans' 'false') OPT_PARAM('_fast_full_scan_enabled' 'false') OPT_PARAM('_index_join_enabled' 'false') ALL_ROWS OUTLINE_LEAF(@"SEL$1") INDEX_RS_ASC(@"SEL$1" "PROJ"@"SEL$1" ("PA_PROJECTS_ALL".filter((NVL("PROJ"."PROJECT_ID")) INDEX_RS_ASC(@"SEL$1" "TASK"@"SEL$1" ("PA_TASKS". at session or system level . 'syyyy-mm-dd hh24:mi:ss'))<=TRUNC(SYSDATE@!) AND NVL("PROJ".0."PROJECT_ID"=1001) Note ----.access("PROJ"."PROJECT_ID"=1001) 5 .access("TASK".

TEMPLATE_START_DATE_ACTIVE. PROJ.SEL$1 / TASK@SEL$1 Cont« .PA_PROJECTS_ALL PROJ.SEL$1 / TASK@SEL$1 5 .TEMPLATE_END_DATE_ACTIVE.01 | 2| ------------------------------------------------------------------------------------------------- 3| Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------1 .SEL$1 2 . 'MM-DD-YYYY') ) AND NVL (PROJ.SEGMENT1. TO_DATE ('01-01-1900'.PROJECT_ID Plan hash value: 3336623817 ------------------------------------------------------------------------------------------------| Id | Operation | Name | Starts | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 7 |00:00:00. TASK.01 | 6| |* 2 | TABLE ACCESS BY INDEX ROWID| PA_PROJECTS_ALL | 1 | 1 |00:00:00.PA_TASKS TASK WHERE 1 = 1 AND PROJ.TASK_NAME.01 | 6| | 1 | NESTED LOOPS | | 1 | 7 |00:00:00.01 | |* 3 | INDEX UNIQUE SCAN | PA_PROJECTS_U1 | 1 | 1 |00:00:00.PROJECT_ID = PROJ.01 | 3| |* 5 | INDEX RANGE SCAN | PA_TASKS_N8 | 1 | 7 |00:00:00.PROJECT_ID = 1001 AND TRUNC (SYSDATE) BETWEEN NVL (PROJ. TRUNC (SYSDATE) ) AND TASK.SEL$1 / PROJ@SEL$1 4 . child number 0 ------------------------------------SELECT /* saboo */ /*+ GATHER_PLAN_STATISTICS */ TASK.NAME FROM PA.SEL$1 / PROJ@SEL$1 3 .)$ - /0 1 . PROJ. 2 345 6*2) ** *  43 PLAN_TABLE_OUTPUT SQL_ID 35d4cm4a53kd2.TASK_NUMBER. PA.01 | 2| | 4 | TABLE ACCESS BY INDEX ROWID| PA_TASKS | 1 | 7 |00:00:00.

"TEMPLATE_START_DATE_ACTIVE".TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@!))) 3 ."PROJECT_ID"=1001) . 'syyyy-mm-dd hh24:mi:ss'))<=TRUNC(SYSDATE@!) AND NVL("PROJ"."PROJECT_ID"=1001) 5 .access("PROJ".5') OPT_PARAM('_b_tree_bitmap_plans' 'false') OPT_PARAM('_fast_full_scan_enabled' 'false') OPT_PARAM('_index_join_enabled' 'false') ALL_ROWS OUTLINE_LEAF(@"SEL$1") INDEX_RS_ASC(@"SEL$1" "PROJ"@"SEL$1" ("PA_PROJECTS_ALL".filter((NVL("PROJ".TO_DATE(' 1900-01-01 00:00:00'.access("TASK".Outline Data ------------/*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('10."TEMPLATE_END_DATE_ACTIVE".0."PM_TASK_REFERENCE")) LEADING(@"SEL$1" "PROJ"@"SEL$1" "TASK"@"SEL$1") USE_NL(@"SEL$1" "TASK"@"SEL$1") END_OUTLINE_DATA */ Predicate Information (identified by operation id): --------------------------------------------------2 ."PROJECT_ID")) INDEX_RS_ASC(@"SEL$1" "TASK"@"SEL$1" ("PA_TASKS"."PROJECT_ID" "PA_TASKS".2.