unnest和push_subq
no_unnest和no_push_subq
push_subq和push_pred
no_push_subq和no_push_pred特别是unnest和push_subq、no_unnest和no_push_subq,搞不明白!
SELECT /*+ no_merge(t) no_push_pred(t)*/
 t1.owner, t.table_name, t. Index_Name
  FROM t1,
       (SELECT t2.id, t2.table_name, t3.index_name
          FROM t2, t3
         WHERE t2.Id = t3.ID) t
 WHERE t1.ID = t.ID
   AND t1.ID = 5PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
Plan hash value: 649751809----------------------------------------------------------------------------------------
| Id  | Operation                      | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |       |     1 |    58 |     5   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                  |       |     1 |    58 |     5   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID  | T1    |     1 |    11 |     2   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN           | PK_T1 |     1 |       |     1   (0)| 00:00:01 |
|   4 |   VIEW                         |       |     1 |    47 |     3   (0)| 00:00:01 |
|   5 |    NESTED LOOPS                |       |     1 |    48 |     3   (0)| 00:00:01 |
|   6 |     TABLE ACCESS BY INDEX ROWID| T3    |     1 |    25 |     2   (0)| 00:00:01 |
|*  7 |      INDEX UNIQUE SCAN         | PK_T3 |     1 |       |     1   (0)| 00:00:01 |
|   8 |     TABLE ACCESS BY INDEX ROWID| T2    |     1 |    23 |     1   (0)| 00:00:01 |
|*  9 |      INDEX UNIQUE SCAN         | PK_T2 |     1 |       |     0   (0)| 00:00:01 |
----------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------   3 - access("T1"."ID"=5)
   7 - access("T3"."ID"=5)
   9 - access("T2"."ID"=5)看执行计划,查询条件推入到view中,no_push_pred似乎不起作用呀!