Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
asaev
Member

Откуда: Спб
Сообщений: 72
Коллеги, есть конструкция вида:

select ... from 
(select ... from ...
 union all
select ... from ...
 union all
select ... from ...
where 1=0 and ...)

Oracle 10.2.0.4, WinXP

autotrace показывает, что анализируются все предикаты в запросе после второго union all, а мне этого не надо

как мне заставить оптимизатор не выполнять запрос после второго union all, т.к. условие фильтра изначально ложное и на остальные предикаты после 1=0 не нужно обращать внимания?

т.е. просто не выполнять этот третий запрос, т.к. строк он не вернет
14 сен 11, 13:13    [11274959]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
asaev
autotrace показывает, что анализируются все предикаты в запросе после второго union all

Каким образом он это показывает ?
14 сен 11, 13:16    [11274978]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
asaev
Member

Откуда: Спб
Сообщений: 72
_Nikotin
asaev
autotrace показывает, что анализируются все предикаты в запросе после второго union all

Каким образом он это показывает ?


я обозвал все алиасы к таблицам в третьем запросе с троечкой на конце

Predicate information
----------------------
...
71 - access("TI3"."ID"(+)="TN3"."F_I")
73 - access("TN3"."ID"(+)="DC3"."GET_C")
74 - access("SI3"."ID"(+)="SN3"."F_I")
76 - access("SN3"."ID"="DC3"."RCE_C")
77 - filter("DC3"."RCE_C" IS NOT NULL AND "DC3"."STATUS"='A')

короче говоря, я вижу, что он намерен их обработать по полной программе


WHERE 1 = 0
           AND sn3.ID = dc3.rce_c(+)
           AND tn3.ID(+) = dc3.get_c
           AND si3.ID(+) = sn3.f_i
           AND ti3.ID(+) = tn3.f_i
             AND dc3.status = 'A'
14 сен 11, 13:29    [11275121]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Выполнением запроса занимается runtime engine и он не будет выполнять ненужный код. Это легко проверить. Опять же, ты опустил предикат - filter(NULL IS NOT NULL)
14 сен 11, 13:59    [11275410]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
asaev
Member

Откуда: Спб
Сообщений: 72
wurdu
Выполнением запроса занимается runtime engine и он не будет выполнять ненужный код. Это легко проверить. Опять же, ты опустил предикат - filter(NULL IS NOT NULL)


да, фильтр я опустил, он был там,
и я тоже ожидал, что лишний код выполняться не должен, однако, на деле это не так
14 сен 11, 17:39    [11277439]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
asaev
однако, на деле это не так

Почему сделан такой вывод?
14 сен 11, 17:44    [11277470]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
asaev
Member

Откуда: Спб
Сообщений: 72
_Nikotin
asaev
однако, на деле это не так

Почему сделан такой вывод?


изменение запроса путем удаления запроса после второго union all существенно ускоряет скорость выполнения, а, по идее, должно быть одним и тем же
14 сен 11, 17:54    [11277539]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
asaev
изменение запроса путем удаления запроса после второго union all существенно ускоряет скорость выполнения, а, по идее, должно быть одним и тем же

Это не показатель, остальной план тоже может измениться. Покажите оба плана.
14 сен 11, 18:05    [11277627]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
asaev
Member

Откуда: Спб
Сообщений: 72
_Nikotin
asaev
изменение запроса путем удаления запроса после второго union all существенно ускоряет скорость выполнения, а, по идее, должно быть одним и тем же

Это не показатель, остальной план тоже может измениться. Покажите оба плана.


уверяю вас, что планы отличаются только тем кусочком, что я приводил выше, они достаточно громоздкие
14 сен 11, 19:07    [11277830]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
asaev,

Попробуйте вставить вызов такой функции в where, чтобы убедитЬся что условия не вычисляются во время выполнения:

create function raise_value_error return number as
begin
  raise value_error;
  return 1; 
end;
/

SQL> select 1 from dual
  2  union all
  3  select 1 from dual where 1=2 and raise_value_error=1;
 
         1
----------
         1
14 сен 11, 19:13    [11277846]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
asaev
Member

Откуда: Спб
Сообщений: 72
_Nikotin
asaev,

Попробуйте вставить вызов такой функции в where, чтобы убедитЬся что условия не вычисляются во время выполнения:

create function raise_value_error return number as
begin
  raise value_error;
  return 1; 
end;
/

SQL> select 1 from dual
  2  union all
  3  select 1 from dual where 1=2 and raise_value_error=1;
 
         1
----------
         1



вот что получилось на БД 10.2.0.4 с виндой только на основе проверки работы функции


 SQL> select 1 from dual
 2  union all
 3  select 1 from dual where 1=2 and raise_value_error=1;
ERROR:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "OWS.RAISE_VALUE_ERROR", line 3

no rows selected

Execution Plan
----------------------------------------------------------
Plan hash value: 2869923190

-----------------------------------------------------------------
| Id  | Operation        | Name | Rows  | Cost (%CPU)| Time     |
-----------------------------------------------------------------
|   0 | SELECT STATEMENT |      |     2 |     2   (0)| 00:00:01 |
|   1 |  UNION-ALL       |      |       |            |          |
|   2 |   FAST DUAL      |      |     1 |     2   (0)| 00:00:01 |
|*  3 |   FILTER         |      |       |            |          |
|   4 |    FAST DUAL     |      |     1 |     2   (0)| 00:00:01 |
-----------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

  3 - filter("RAISE_VALUE_ERROR"()=1 AND NULL IS NOT NULL)

чего котенку в организме не хватает?
19 сен 11, 14:43    [11298883]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
Alexander Anokhin
Member

Откуда: Хабаровск
Сообщений: 500
wurdu
Выполнением запроса занимается runtime engine и он не будет выполнять ненужный код. Это легко проверить. Опять же, ты опустил предикат - filter(NULL IS NOT NULL)


select * 
  from all_objects o, 
       all_tables t
 where 1=2;

+ plan

--------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                                | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                                         |               |   344 |   238K|  2893  (18)| 00:00:01 |
|*  1 |  TABLE ACCESS BY INDEX ROWID                             | SUM$          |     1 |    26 |     0   (0)| 00:00:01 |
|*  2 |   INDEX UNIQUE SCAN                                      | I_SUM$_1      |     1 |       |     0   (0)| 00:00:01 |
|*  3 |  FILTER                                                  |               |       |       |            |          |
|*  4 |   HASH JOIN RIGHT OUTER                                  |               |  2878 |  1992K|  2893  (18)| 00:00:01 |
|   5 |    TABLE ACCESS FULL                                     | SEG$          | 11129 |   521K|   233  (17)| 00:00:01 |
|*  6 |    HASH JOIN RIGHT OUTER                                 |               |  2864 |  1848K|  2653  (18)| 00:00:01 |
|   7 |     TABLE ACCESS FULL                                    | USER$         |  8179 |   103K|   229  (11)| 00:00:01 |
|*  8 |     HASH JOIN RIGHT OUTER                                |               |  2864 |  1812K|  2418  (19)| 00:00:01 |
|   9 |      TABLE ACCESS FULL                                   | OBJ$          | 54856 |   428K|   440  (16)| 00:00:01 |
|* 10 |      HASH JOIN                                           |               |  2864 |  1790K|  1946  (18)| 00:00:01 |
|  11 |       TABLE ACCESS FULL                                  | USER$         |  8179 |   103K|   229  (11)| 00:00:01 |
|* 12 |       HASH JOIN                                          |               |  2864 |  1753K|  1711  (19)| 00:00:01 |
|  13 |        NESTED LOOPS OUTER                                |               |  2864 |  1655K|  1128   (9)| 00:00:01 |
|* 14 |         HASH JOIN                                        |               |  2864 |  1574K|  1042  (10)| 00:00:01 |
|  15 |          MERGE JOIN CARTESIAN                            |               |    99 | 47322 |    44  (14)| 00:00:01 |
|* 16 |           HASH JOIN                                      |               |     1 |   454 |     3 (100)| 00:00:01 |
|  17 |            MERGE JOIN CARTESIAN                          |               |     1 |   183 |     1 (100)| 00:00:01 |
|  18 |             VIEW                                         | ALL_OBJECTS   |     1 |   128 |     5 (100)| 00:00:01 |
|* 19 |              FILTER                                      |               |       |       |            |          |
|* 20 |               FILTER                                     |               |       |       |            |          |
|* 21 |                HASH JOIN                                 |               | 54715 |  4541K|  1078  (47)| 00:00:01 |
|  22 |                 TABLE ACCESS FULL                        | USER$         |  8179 |   103K|   229  (11)| 00:00:01 |
|* 23 |                 TABLE ACCESS FULL                        | OBJ$          | 54715 |  3847K|   824  (56)| 00:00:01 |
|* 24 |               TABLE ACCESS BY INDEX ROWID                | IND$          |     1 |     8 |     2   (0)| 00:00:01 |
|* 25 |                INDEX UNIQUE SCAN                         | I_IND1        |     1 |       |     1   (0)| 00:00:01 |
|* 26 |                HASH JOIN                                 |               |     1 |    25 |     4  (50)| 00:00:01 |
|* 27 |                 INDEX RANGE SCAN                         | I_OBJAUTH1    |     1 |    12 |     2   (0)| 00:00:01 |
|  28 |                 FIXED TABLE FULL                         | X$KZSRO       |   100 |  1300 |     1 (100)| 00:00:01 |
|* 29 |                 FIXED TABLE FULL                         | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 30 |                  FIXED TABLE FULL                        | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 31 |                   HASH JOIN                              |               |     1 |    25 |     4  (50)| 00:00:01 |
|* 32 |                    INDEX RANGE SCAN                      | I_OBJAUTH1    |     1 |    12 |     2   (0)| 00:00:01 |
|  33 |                    FIXED TABLE FULL                      | X$KZSRO       |   100 |  1300 |     1 (100)| 00:00:01 |
|* 34 |                    HASH JOIN                             |               |     1 |    25 |     4  (50)| 00:00:01 |
|* 35 |                     INDEX RANGE SCAN                     | I_OBJAUTH1    |     1 |    12 |     2   (0)| 00:00:01 |
|  36 |                     FIXED TABLE FULL                     | X$KZSRO       |   100 |  1300 |     1 (100)| 00:00:01 |
|* 37 |                     FIXED TABLE FULL                     | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 38 |                      TABLE ACCESS BY INDEX ROWID         | DEPENDENCY$   |     1 |    10 |     3   (0)| 00:00:01 |
|  39 |                       NESTED LOOPS                       |               |     1 |    70 |     9  (12)| 00:00:01 |
|  40 |                        NESTED LOOPS                      |               |     1 |    60 |     6  (17)| 00:00:01 |
|  41 |                         MERGE JOIN CARTESIAN             |               |     1 |    48 |     5  (20)| 00:00:01 |
|* 42 |                          TABLE ACCESS BY INDEX ROWID     | OBJ$          |     1 |    35 |     4   (0)| 00:00:01 |
|* 43 |                           INDEX RANGE SCAN               | I_OBJ2        |     1 |       |     3   (0)| 00:00:01 |
|  44 |                          BUFFER SORT                     |               |   100 |  1300 |     1 (100)| 00:00:01 |
|  45 |                           FIXED TABLE FULL               | X$KZSRO       |   100 |  1300 |     1 (100)| 00:00:01 |
|* 46 |                         INDEX RANGE SCAN                 | I_OBJAUTH1    |     1 |    12 |     1   (0)| 00:00:01 |
|* 47 |                        INDEX RANGE SCAN                  | I_DEPENDENCY1 |     3 |       |     2   (0)| 00:00:01 |
|* 48 |                       FIXED TABLE FULL                   | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 49 |                        HASH JOIN                         |               |     1 |    39 |     4  (50)| 00:00:01 |
|  50 |                         NESTED LOOPS                     |               |     1 |    26 |     2   (0)| 00:00:01 |
|* 51 |                          TABLE ACCESS BY INDEX ROWID     | TRIGGER$      |     1 |    14 |     1   (0)| 00:00:01 |
|* 52 |                           INDEX UNIQUE SCAN              | I_TRIGGER2    |     1 |       |     0   (0)| 00:00:01 |
|* 53 |                          INDEX RANGE SCAN                | I_OBJAUTH1    |     1 |    12 |     1   (0)| 00:00:01 |
|  54 |                         FIXED TABLE FULL                 | X$KZSRO       |   100 |  1300 |     1 (100)| 00:00:01 |
|* 55 |                         FIXED TABLE FULL                 | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 56 |                          FIXED TABLE FULL                | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 57 |                           TABLE ACCESS BY INDEX ROWID    | DEPENDENCY$   |     1 |    10 |     3   (0)| 00:00:01 |
|  58 |                            NESTED LOOPS                  |               |     1 |    70 |     9  (12)| 00:00:01 |
|  59 |                             NESTED LOOPS                 |               |     1 |    60 |     6  (17)| 00:00:01 |
|  60 |                              MERGE JOIN CARTESIAN        |               |     1 |    48 |     5  (20)| 00:00:01 |
|* 61 |                               TABLE ACCESS BY INDEX ROWID| OBJ$          |     1 |    35 |     4   (0)| 00:00:01 |
|* 62 |                                INDEX RANGE SCAN          | I_OBJ2        |     1 |       |     3   (0)| 00:00:01 |
|  63 |                               BUFFER SORT                |               |   100 |  1300 |     1 (100)| 00:00:01 |
|  64 |                                FIXED TABLE FULL          | X$KZSRO       |   100 |  1300 |     1 (100)| 00:00:01 |
|* 65 |                              INDEX RANGE SCAN            | I_OBJAUTH1    |     1 |    12 |     1   (0)| 00:00:01 |
|* 66 |                             INDEX RANGE SCAN             | I_DEPENDENCY1 |     3 |       |     2   (0)| 00:00:01 |
|* 67 |                            FIXED TABLE FULL              | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 68 |                             FIXED TABLE FULL             | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 69 |                              FIXED TABLE FULL            | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 70 |                               FIXED TABLE FULL           | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 71 |                                FIXED TABLE FULL          | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 72 |                                 FIXED TABLE FULL         | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 73 |                                  FIXED TABLE FULL        | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 74 |                                   FIXED TABLE FULL       | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 75 |                                    FIXED TABLE FULL      | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 76 |                                     FIXED TABLE FULL     | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 77 |                                      FIXED TABLE FULL    | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 78 |                                       FIXED TABLE FULL   | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 79 |                                        FIXED TABLE FULL  | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 80 |                                         FIXED TABLE FULL | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|* 81 |                                          FIXED TABLE FULL| X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
|  82 |                                           VIEW           |               |     1 |    13 |     2   (0)| 00:00:01 |
|  83 |                                            FAST DUAL     |               |     1 |       |     2   (0)| 00:00:01 |
|  84 |             BUFFER SORT                                  |               |     1 |    55 |     1 (100)| 00:00:01 |
|* 85 |              FIXED TABLE FULL                            | X$KSPPI       |     1 |    55 |     1 (100)| 00:00:01 |
|  86 |            FIXED TABLE FULL                              | X$KSPPCV      |   100 | 27100 |     1 (100)| 00:00:01 |
|  87 |           BUFFER SORT                                    |               |    99 |  2376 |    43  (12)| 00:00:01 |
|  88 |            TABLE ACCESS FULL                             | TS$           |    99 |  2376 |    41   (8)| 00:00:01 |
|* 89 |          TABLE ACCESS FULL                               | TAB$          |  2864 |   237K|   996   (9)| 00:00:01 |
|  90 |         TABLE ACCESS BY INDEX ROWID                      | OBJ$          |     1 |    29 |     1   (0)| 00:00:01 |
|* 91 |          INDEX UNIQUE SCAN                               | I_OBJ1        |     1 |       |     0   (0)| 00:00:01 |
|* 92 |        TABLE ACCESS FULL                                 | OBJ$          | 54856 |  1874K|   561  (35)| 00:00:01 |
|* 93 |   HASH JOIN                                              |               |     1 |    22 |     4  (50)| 00:00:01 |
|* 94 |    INDEX RANGE SCAN                                      | I_OBJAUTH1    |     1 |     9 |     2   (0)| 00:00:01 |
|  95 |    FIXED TABLE FULL                                      | X$KZSRO       |   100 |  1300 |     1 (100)| 00:00:01 |
|* 96 |    FIXED TABLE FULL                                      | X$KZSPR       |     1 |    26 |     1 (100)| 00:00:01 |
--------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter(BITAND("S"."XPFLAGS",8388608)=8388608)
   2 - access("S"."OBJ#"=:B1)
   3 - filter("O"."OWNER#"=USERENV('SCHEMAID') OR  EXISTS (SELECT /*+ */ 0 FROM "SYS"."OBJAUTH$"
              "OA",SYS."X$KZSRO" "X$KZSRO" WHERE "GRANTEE#"="KZSROROL" AND "OA"."OBJ#"=:B1) OR  EXISTS (SELECT /*+ */ 0 FROM
              SYS."X$KZSPR" "X$KZSPR" WHERE "INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR
              (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50))))
   4 - access("T"."FILE#"="S"."FILE#"(+) AND "T"."BLOCK#"="S"."BLOCK#"(+) AND "T"."TS#"="S"."TS#"(+))
   6 - access("CX"."OWNER#"="CU"."USER#"(+))
   8 - access("T"."DATAOBJ#"="CX"."OBJ#"(+))
  10 - access("O"."OWNER#"="U"."USER#")
  12 - access("O"."OBJ#"="T"."OBJ#")
  14 - access("T"."TS#"="TS"."TS#")
  16 - access("KSPPI"."INDX"="KSPPCV"."INDX")
  19 - filter(("O"."TYPE#"<>1 AND "O"."TYPE#"<>10 OR "O"."TYPE#"=1 AND  (SELECT /*+ */ 1 FROM "SYS"."IND$" "I"
              WHERE "I"."OBJ#"=:B1 AND ("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR
              "I"."TYPE#"=7 OR "I"."TYPE#"=9))=1) AND (("O"."OWNER#"=USERENV('SCHEMAID') OR "O"."OWNER#"=1) OR ( EXISTS (SELECT
              /*+ */ 0 FROM "SYS"."OBJAUTH$" "OA",SYS."X$KZSRO" "X$KZSRO" WHERE "OA"."GRANTEE#"="KZSROROL" AND "OA"."OBJ#"=:B2
              AND ("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26)) OR  EXISTS (SELECT /*+ */ 0 FROM SYS."X$KZSPR" "X$KZSPR"
              WHERE "INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-144) OR (-"KZSPRPRV")=(-141) OR (-"KZSPRPRV")=(-241))))
              AND ("O"."TYPE#"=7 OR "O"."TYPE#"=8 OR "O"."TYPE#"=9 OR "O"."TYPE#"=28 OR "O"."TYPE#"=29 OR "O"."TYPE#"=30 OR
              "O"."TYPE#"=56) OR ("O"."TYPE#"=1 OR "O"."TYPE#"=2 OR "O"."TYPE#"=3 OR "O"."TYPE#"=4 OR "O"."TYPE#"=5 OR
              "O"."TYPE#"=19 OR "O"."TYPE#"=20 OR "O"."TYPE#"=34 OR "O"."TYPE#"=35) AND  EXISTS (SELECT /*+ */ 0 FROM
              SYS."X$KZSPR" "X$KZSPR" WHERE "INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR
              (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50))) OR "O"."TYPE#"<>29 AND "O"."TYPE#"<>13 AND
              "O"."TYPE#"<>9 AND "O"."TYPE#"<>11 AND "O"."TYPE#"<>30 AND "O"."TYPE#"<>56 AND "O"."TYPE#"<>12 AND "O"."TYPE#"<>7
              AND "O"."TYPE#"<>8 AND "O"."TYPE#"<>14 AND "O"."TYPE#"<>28 AND  EXISTS (SELECT /*+ */ 0 FROM "SYS"."OBJAUTH$"
              "OBJAUTH$",SYS."X$KZSRO" "X$KZSRO" WHERE "GRANTEE#"="KZSROROL" AND "OBJ#"=:B3 AND ("PRIVILEGE#"=3 OR
              "PRIVILEGE#"=6 OR "PRIVILEGE#"=7 OR "PRIVILEGE#"=9 OR "PRIVILEGE#"=10 OR "PRIVILEGE#"=11 OR "PRIVILEGE#"=12 OR
              "PRIVILEGE#"=16 OR "PRIVILEGE#"=17 OR "PRIVILEGE#"=18)) OR ( EXISTS (SELECT /*+ */ 0 FROM "SYS"."OBJAUTH$"
              "OA",SYS."X$KZSRO" "X$KZSRO" WHERE "OA"."GRANTEE#"="KZSROROL" AND "OA"."OBJ#"=:B4 AND ("OA"."PRIVILEGE#"=12 OR
              "OA"."PRIVILEGE#"=26)) OR  EXISTS (SELECT /*+ */ 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE
              "INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-184) OR (-"KZSPRPRV")=(-181) OR (-"KZSPRPRV")=(-241)))) AND
              "O"."TYPE#"=13 OR ( EXISTS (SELECT /*+ */ 0 FROM "SYS"."OBJAUTH$" "OA","SYS"."DEPENDENCY$" "DEP","SYS"."OBJ$"
              "SPECOBJ",SYS."X$KZSRO" "X$KZSRO" WHERE "SPECOBJ"."NAME"=:B5 AND "SPECOBJ"."OWNER#"=:B6 AND "SPECOBJ"."TYPE#"=9
              AND "DEP"."D_OBJ#"=:B7 AND "DEP"."P_OBJ#"="SPECOBJ"."OBJ#" AND "OA"."OBJ#"="SPECOBJ"."OBJ#" AND
              "OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL") OR  EXISTS (SELECT /*+ */ 0 FROM SYS."X$KZSPR" "X$KZSPR"
              WHERE ((-"KZSPRPRV")=(-141) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))) AND "O"."TYPE#"=11 OR (
              EXISTS (SELECT /*+ */ 0 FROM "SYS"."OBJAUTH$" "OA","SYS"."TRIGGER$" "T",SYS."X$KZSRO" "X$KZSRO" WHERE
              "OA"."GRANTEE#"="KZSROROL" AND "T"."OBJ#"=:B8 AND BITAND("T"."PROPERTY",24)=0 AND "OA"."OBJ#"="T"."BASEOBJECT"
              AND "OA"."PRIVILEGE#"=26) OR  EXISTS (SELECT /*+ */ 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE ((-"KZSPRPRV")=(-152) OR
              (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))) AND "O"."TYPE#"=12 OR "O"."TYPE#"=6 AND  EXISTS (SELECT
              /*+ */ 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE (-"KZSPRPRV")=(-109) AND "INST_ID"=USERENV('INSTANCE')) OR ( EXISTS
              (SELECT /*+ */ 0 FROM "SYS"."OBJAUTH$" "OA","SYS"."DEPENDENCY$" "DEP","SYS"."OBJ$" "SPECOBJ",SYS."X$KZSRO"
              "X$KZSRO" WHERE "SPECOBJ"."NAME"=:B9 AND "SPECOBJ"."OWNER#"=:B10 AND "SPECOBJ"."TYPE#"=13 AND "DEP"."D_OBJ#"=:B11
              AND "DEP"."P_OBJ#"="SPECOBJ"."OBJ#" AND "OA"."OBJ#"="SPECOBJ"."OBJ#" AND "OA"."PRIVILEGE#"=26 AND
              "OA"."GRANTEE#"="KZSROROL") OR  EXISTS (SELECT /*+ */ 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE ((-"KZSPRPRV")=(-181)
              OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))) AND "O"."TYPE#"=14 OR "O"."TYPE#"=22 AND  EXISTS
              (SELECT /*+ */ 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE "INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-189) OR
              (-"KZSPRPRV")=(-190) OR (-"KZSPRPRV")=(-191) OR (-"KZSPRPRV")=(-192))) OR ("O"."TYPE#"=69 OR "O"."TYPE#"=72 OR
              "O"."TYPE#"=74) OR "O"."TYPE#"=46 AND  EXISTS (SELECT /*+ */ 0 FROM SYS."X$KZSPR" "X$KZSPR" )
  20 - filter(NULL IS NOT NULL)
  21 - access("O"."OWNER#"="U"."USER#")
  23 - filter("O"."LINKNAME" IS NULL AND "O"."NAME"<>'_NEXT_OBJECT' AND "O"."NAME"<>'_default_auditing_options_'
              AND BITAND("O"."FLAGS",128)=0)
  24 - filter("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR "I"."TYPE#"=7
              OR "I"."TYPE#"=9)
  25 - access("I"."OBJ#"=:B1)
  26 - access("OA"."GRANTEE#"="KZSROROL")
  27 - access("OA"."OBJ#"=:B1)
       filter("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26)
  29 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-144) OR (-"KZSPRPRV")=(-141) OR
              (-"KZSPRPRV")=(-241)))
  30 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR
              (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50)))
  31 - access("GRANTEE#"="KZSROROL")
  32 - access("OBJ#"=:B1)
       filter("PRIVILEGE#"=3 OR "PRIVILEGE#"=6 OR "PRIVILEGE#"=7 OR "PRIVILEGE#"=9 OR "PRIVILEGE#"=10 OR
              "PRIVILEGE#"=11 OR "PRIVILEGE#"=12 OR "PRIVILEGE#"=16 OR "PRIVILEGE#"=17 OR "PRIVILEGE#"=18)
  34 - access("OA"."GRANTEE#"="KZSROROL")
  35 - access("OA"."OBJ#"=:B1)
       filter("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26)
  37 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-184) OR (-"KZSPRPRV")=(-181) OR
              (-"KZSPRPRV")=(-241)))
  38 - filter("DEP"."P_OBJ#"="SPECOBJ"."OBJ#")
  42 - filter("SPECOBJ"."TYPE#"=9)
  43 - access("SPECOBJ"."OWNER#"=:B1 AND "SPECOBJ"."NAME"=:B2)
  46 - access("OA"."OBJ#"="SPECOBJ"."OBJ#" AND "OA"."GRANTEE#"="KZSROROL" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL")
  47 - access("DEP"."D_OBJ#"=:B1)
  48 - filter(((-"KZSPRPRV")=(-141) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))
  49 - access("OA"."GRANTEE#"="KZSROROL")
  51 - filter(BITAND("T"."PROPERTY",24)=0)
  52 - access("T"."OBJ#"=:B1)
  53 - access("OA"."OBJ#"="T"."BASEOBJECT" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26)
  55 - filter(((-"KZSPRPRV")=(-152) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))
  56 - filter((-"KZSPRPRV")=(-109) AND "INST_ID"=USERENV('INSTANCE'))
  57 - filter("DEP"."P_OBJ#"="SPECOBJ"."OBJ#")
  61 - filter("SPECOBJ"."TYPE#"=13)
  62 - access("SPECOBJ"."OWNER#"=:B1 AND "SPECOBJ"."NAME"=:B2)
  65 - access("OA"."OBJ#"="SPECOBJ"."OBJ#" AND "OA"."GRANTEE#"="KZSROROL" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL")
  66 - access("DEP"."D_OBJ#"=:B1)
  67 - filter(((-"KZSPRPRV")=(-181) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))
  68 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-189) OR (-"KZSPRPRV")=(-190) OR
              (-"KZSPRPRV")=(-191) OR (-"KZSPRPRV")=(-192)))
  69 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-251) OR (-"KZSPRPRV")=(-252) OR
              (-"KZSPRPRV")=(-253) OR (-"KZSPRPRV")=(-254)))
  70 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-246) OR (-"KZSPRPRV")=(-247) OR
              (-"KZSPRPRV")=(-248) OR (-"KZSPRPRV")=(-249)))
  71 - filter((-"KZSPRPRV")=(-265) AND "INST_ID"=USERENV('INSTANCE'))
  72 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-200) OR (-"KZSPRPRV")=(-201) OR
              (-"KZSPRPRV")=(-202) OR (-"KZSPRPRV")=(-203) OR (-"KZSPRPRV")=(-204)))
  73 - filter((-"KZSPRPRV")=12 AND "INST_ID"=USERENV('INSTANCE'))
  74 - filter(((-"KZSPRPRV")=(-268) OR (-"KZSPRPRV")=(-267)) AND "INST_ID"=USERENV('INSTANCE'))
  75 - filter(((-"KZSPRPRV")=(-177) OR (-"KZSPRPRV")=(-178)) AND "INST_ID"=USERENV('INSTANCE'))
  76 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR
              (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50)))
  77 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-205) OR (-"KZSPRPRV")=(-206) OR
              (-"KZSPRPRV")=(-207) OR (-"KZSPRPRV")=(-208)))
  78 - filter(((-"KZSPRPRV")=(-222) OR (-"KZSPRPRV")=(-223)) AND "INST_ID"=USERENV('INSTANCE'))
  79 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-258) OR (-"KZSPRPRV")=(-259) OR
              (-"KZSPRPRV")=(-260) OR (-"KZSPRPRV")=(-261)))
  80 - filter(((-"KZSPRPRV")=(-265) OR (-"KZSPRPRV")=(-266)) AND "INST_ID"=USERENV('INSTANCE'))
  81 - filter(((-"KZSPRPRV")=(-277) OR (-"KZSPRPRV")=(-278)) AND "INST_ID"=USERENV('INSTANCE'))
  85 - filter("KSPPI"."KSPPINM"='_dml_monitoring_enabled')
  89 - filter(BITAND("T"."PROPERTY",1)=0)
  91 - access("T"."BOBJ#"="CO"."OBJ#"(+))
  92 - filter(BITAND("O"."FLAGS",128)=0)
  93 - access("GRANTEE#"="KZSROROL")
  94 - access("OA"."OBJ#"=:B1)
  96 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR
              (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50)))
 
19 сен 11, 15:48    [11299441]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
Alexander Anokhin
Member

Откуда: Хабаровск
Сообщений: 500
asaev
чего котенку в организме не хватает?

Ну как вариант можно обернуть в подзапрос и запретить слияние и проталкивание предикатов. Это допустимо в твоем случае?
19 сен 11, 15:49    [11299458]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
asaev
Member

Откуда: Спб
Сообщений: 72
Alexander Anokhin, в принципе, допустимо.
По отдельности я пробовал запретить и слияние и проталкивание, но не пробовал вместе.
19 сен 11, 16:42    [11299839]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
asaev
чего котенку в организме не хватает?

Поставьте ложное условие после всех предикатов.
В 10-ке похоже нет такой фичи (из 10053):
Cdn, Cost adjusted (to ~ 0) as where clause evalutes to FALSE
Or-Expansion validity checks failed on query block SEL$1 (#0) because no need for OR expansion if we only have 1-row tables
Transfer Optimizer annotations for query block SEL$1 (#0)
id=0 fptconst predicate=NULL IS NOT NULL AND "TEST_USER"."RAISE_VALUE_ERROR"()=1
19 сен 11, 23:55    [11302074]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
asaev, надо все-таки рассматривать конкретный случай, чтобы разобраться в чем проблема. Если сможешь сделать тесткейс - будет хорошо. Дополню про runtime engine. Предположим, что мы ставим условие не 1=0, а 1=:p, чтобы рулить, когда выполняться всем веткам плана с обращением к объектам, а когда нет. Возьмем пример Alexander Anokhin
var p number;
exec :p := 2;

PL/SQL procedure successfully completed.

set autotrace traceonly
select * 
  2    from all_objects o, 
  3         all_tables t
  4   where 1=:p;

no rows selected

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
       4134  bytes sent via SQL*Net to client
        335  bytes received via SQL*Net from client
          1  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          0  rows processed
+ план
Execution Plan
----------------------------------------------------------
Plan hash value: 2050388204

---------------------------------------------------------------------------------------------------------------------
| Id  | Operation                         | Name                    | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                  |                         |    23M|    53G|       | 76890   (9)| 00:15:23 |
|*  1 |  TABLE ACCESS BY INDEX ROWID      | SUM$                    |     1 |    26 |       |     0   (0)| 00:00:01 |
|*  2 |   INDEX UNIQUE SCAN               | I_SUM$_1                |     1 |       |       |     0   (0)| 00:00:01 |
|   3 |  TABLE ACCESS BY INDEX ROWID      | OBJ$                    |     1 |    30 |       |     3   (0)| 00:00:01 |
|*  4 |   INDEX RANGE SCAN                | I_OBJ1                  |     1 |       |       |     2   (0)| 00:00:01 |
|*  5 |  FILTER                           |                         |       |       |       |            |          |
|*  6 |   FILTER                          |                         |       |       |       |            |          |
|*  7 |    HASH JOIN                      |                         |   567M|  1316G|       | 76890   (9)| 00:15:23 |
|   8 |     TABLE ACCESS FULL             | USER$                   |    85 |  1445 |       |     3   (0)| 00:00:01 |
|*  9 |     HASH JOIN                     |                         |   567M|  1307G|  7776K| 73581   (5)| 00:14:43 |
|* 10 |      TABLE ACCESS FULL            | OBJ$                    | 82900 |  6800K|       |   318   (5)| 00:00:04 |
|  11 |      MERGE JOIN CARTESIAN         |                         |   581K|  1325M|       |  3511   (1)| 00:00:43 |
|  12 |       NESTED LOOPS OUTER          |                         |  6846 |    15M|       |  1648   (1)| 00:00:20 |
|* 13 |        HASH JOIN RIGHT OUTER      |                         |  6846 |    15M|       |  1456   (2)| 00:00:18 |
|  14 |         TABLE ACCESS FULL         | USER$                   |    85 |  1445 |       |     3   (0)| 00:00:01 |
|* 15 |         HASH JOIN RIGHT OUTER     |                         |  6846 |    15M|       |  1453   (2)| 00:00:18 |
|  16 |          INDEX FAST FULL SCAN     | I_OBJ1                  | 88177 |   688K|       |    80   (2)| 00:00:01 |
|* 17 |          HASH JOIN                |                         |  6846 |    15M|       |  1372   (1)| 00:00:17 |
|  18 |           TABLE ACCESS FULL       | USER$                   |    85 |  1445 |       |     3   (0)| 00:00:01 |
|* 19 |           HASH JOIN               |                         |  6846 |    14M|       |  1368   (1)| 00:00:17 |
|  20 |            TABLE ACCESS FULL      | TS$                     |    22 |   462 |       |     8   (0)| 00:00:01 |
|* 21 |            HASH JOIN RIGHT OUTER  |                         |  6846 |    14M|       |  1359   (1)| 00:00:17 |
|  22 |             TABLE ACCESS FULL     | SEG$                    | 15136 |   650K|       |   121   (1)| 00:00:02 |
|* 23 |             HASH JOIN RIGHT OUTER |                         |  6693 |    14M|       |  1238   (1)| 00:00:15 |
|  24 |              TABLE ACCESS FULL    | DEFERRED_STG$           | 10214 |   259K|       |    20   (0)| 00:00:01 |
|* 25 |              HASH JOIN            |                         |  6693 |    14M|       |  1217   (1)| 00:00:15 |
|* 26 |               TABLE ACCESS FULL   | TAB$                    |  6693 |   640K|       |   905   (1)| 00:00:11 |
|  27 |               MERGE JOIN CARTESIAN|                         | 82903 |   166M|       |   311   (2)| 00:00:04 |
|* 28 |                HASH JOIN          |                         |     1 |  2070 |       |     1 (100)| 00:00:01 |
|* 29 |                 FIXED TABLE FULL  | X$KSPPI                 |     1 |    55 |       |     0   (0)| 00:00:01 |
|  30 |                 FIXED TABLE FULL  | X$KSPPCV                |   100 |   196K|       |     0   (0)| 00:00:01 |
|  31 |                BUFFER SORT        |                         | 82903 |  2914K|       |   311   (2)| 00:00:04 |
|* 32 |                 TABLE ACCESS FULL | OBJ$                    | 82903 |  2914K|       |   311   (2)| 00:00:04 |
|  33 |        TABLE ACCESS BY INDEX ROWID| OBJ$                    |     1 |    30 |       |     2   (0)| 00:00:01 |
|* 34 |         INDEX RANGE SCAN          | I_OBJ1                  |     1 |       |       |     1   (0)| 00:00:01 |
|  35 |       BUFFER SORT                 |                         |    85 |  1870 |       |  3509   (1)| 00:00:43 |
|  36 |        INDEX FAST FULL SCAN       | I_USER2                 |    85 |  1870 |       |     0   (0)| 00:00:01 |
|  37 |   NESTED LOOPS                    |                         |     2 |    42 |       |     2   (0)| 00:00:01 |
|* 38 |    INDEX RANGE SCAN               | I_OBJAUTH1              |     1 |     8 |       |     2   (0)| 00:00:01 |
|* 39 |    FIXED TABLE FULL               | X$KZSRO                 |     2 |    26 |       |     0   (0)| 00:00:01 |
|* 40 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|* 41 |   TABLE ACCESS BY INDEX ROWID     | IND$                    |     1 |     8 |       |     2   (0)| 00:00:01 |
|* 42 |    INDEX UNIQUE SCAN              | I_IND1                  |     1 |       |       |     1   (0)| 00:00:01 |
|* 43 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|  44 |   NESTED LOOPS                    |                         |     1 |    24 |       |     2   (0)| 00:00:01 |
|* 45 |    INDEX RANGE SCAN               | I_OBJAUTH1              |     1 |    11 |       |     2   (0)| 00:00:01 |
|* 46 |    FIXED TABLE FULL               | X$KZSRO                 |     1 |    13 |       |     0   (0)| 00:00:01 |
|* 47 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|  48 |   NESTED LOOPS                    |                         |     2 |    48 |       |     2   (0)| 00:00:01 |
|* 49 |    INDEX RANGE SCAN               | I_OBJAUTH1              |     1 |    11 |       |     2   (0)| 00:00:01 |
|* 50 |    FIXED TABLE FULL               | X$KZSRO                 |     2 |    26 |       |     0   (0)| 00:00:01 |
|  51 |   NESTED LOOPS                    |                         |     1 |    24 |       |     2   (0)| 00:00:01 |
|* 52 |    INDEX RANGE SCAN               | I_OBJAUTH1              |     1 |    11 |       |     2   (0)| 00:00:01 |
|* 53 |    FIXED TABLE FULL               | X$KZSRO                 |     1 |    13 |       |     0   (0)| 00:00:01 |
|* 54 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|  55 |   NESTED LOOPS                    |                         |       |       |       |            |          |
|  56 |    NESTED LOOPS                   |                         |     1 |    78 |       |     8   (0)| 00:00:01 |
|  57 |     NESTED LOOPS                  |                         |     1 |    68 |       |     5   (0)| 00:00:01 |
|  58 |      NESTED LOOPS                 |                         |     1 |    57 |       |     4   (0)| 00:00:01 |
|  59 |       MERGE JOIN CARTESIAN        |                         |     1 |    53 |       |     3   (0)| 00:00:01 |
|* 60 |        INDEX RANGE SCAN           | I_OBJ5                  |     1 |    40 |       |     3   (0)| 00:00:01 |
|  61 |        BUFFER SORT                |                         |   100 |  1300 |       |     0   (0)| 00:00:01 |
|  62 |         FIXED TABLE FULL          | X$KZSRO                 |   100 |  1300 |       |     0   (0)| 00:00:01 |
|* 63 |       INDEX RANGE SCAN            | I_USER2                 |     1 |     4 |       |     1   (0)| 00:00:01 |
|* 64 |      INDEX RANGE SCAN             | I_OBJAUTH1              |     1 |    11 |       |     1   (0)| 00:00:01 |
|* 65 |     INDEX RANGE SCAN              | I_DEPENDENCY1           |     3 |       |       |     2   (0)| 00:00:01 |
|* 66 |    TABLE ACCESS BY INDEX ROWID    | DEPENDENCY$             |     1 |    10 |       |     3   (0)| 00:00:01 |
|* 67 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|  68 |   NESTED LOOPS                    |                         |     2 |    76 |       |     2   (0)| 00:00:01 |
|  69 |    NESTED LOOPS                   |                         |     1 |    25 |       |     2   (0)| 00:00:01 |
|* 70 |     TABLE ACCESS BY INDEX ROWID   | TRIGGER$                |     1 |    14 |       |     1   (0)| 00:00:01 |
|* 71 |      INDEX UNIQUE SCAN            | I_TRIGGER2              |     1 |       |       |     0   (0)| 00:00:01 |
|* 72 |     INDEX RANGE SCAN              | I_OBJAUTH1              |     1 |    11 |       |     1   (0)| 00:00:01 |
|* 73 |    FIXED TABLE FULL               | X$KZSRO                 |     2 |    26 |       |     0   (0)| 00:00:01 |
|* 74 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|  75 |   NESTED LOOPS                    |                         |       |       |       |            |          |
|  76 |    NESTED LOOPS                   |                         |     1 |    78 |       |     8   (0)| 00:00:01 |
|  77 |     NESTED LOOPS                  |                         |     1 |    68 |       |     5   (0)| 00:00:01 |
|  78 |      NESTED LOOPS                 |                         |     1 |    57 |       |     4   (0)| 00:00:01 |
|  79 |       MERGE JOIN CARTESIAN        |                         |     1 |    53 |       |     3   (0)| 00:00:01 |
|* 80 |        INDEX RANGE SCAN           | I_OBJ5                  |     1 |    40 |       |     3   (0)| 00:00:01 |
|  81 |        BUFFER SORT                |                         |   100 |  1300 |       |     0   (0)| 00:00:01 |
|  82 |         FIXED TABLE FULL          | X$KZSRO                 |   100 |  1300 |       |     0   (0)| 00:00:01 |
|* 83 |       INDEX RANGE SCAN            | I_USER2                 |     1 |     4 |       |     1   (0)| 00:00:01 |
|* 84 |      INDEX RANGE SCAN             | I_OBJAUTH1              |     1 |    11 |       |     1   (0)| 00:00:01 |
|* 85 |     INDEX RANGE SCAN              | I_DEPENDENCY1           |     3 |       |       |     2   (0)| 00:00:01 |
|* 86 |    TABLE ACCESS BY INDEX ROWID    | DEPENDENCY$             |     1 |    10 |       |     3   (0)| 00:00:01 |
|* 87 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|  88 |   NESTED LOOPS                    |                         |     2 |    68 |       |     2   (0)| 00:00:01 |
|  89 |    NESTED LOOPS                   |                         |     1 |    21 |       |     2   (0)| 00:00:01 |
|  90 |     TABLE ACCESS BY INDEX ROWID   | TABPART$                |     1 |    10 |       |     1   (0)| 00:00:01 |
|* 91 |      INDEX UNIQUE SCAN            | I_TABPART_OBJ$          |     1 |       |       |     0   (0)| 00:00:01 |
|* 92 |     INDEX RANGE SCAN              | I_OBJAUTH1              |     1 |    11 |       |     1   (0)| 00:00:01 |
|* 93 |    FIXED TABLE FULL               | X$KZSRO                 |     2 |    26 |       |     0   (0)| 00:00:01 |
|* 94 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|* 95 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|* 96 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|* 97 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|* 98 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|* 99 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
| 100 |   VIEW                            |                         |     1 |    13 |       |     2   (0)| 00:00:01 |
| 101 |    FAST DUAL                      |                         |     1 |       |       |     2   (0)| 00:00:01 |
|*102 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*103 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*104 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*105 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*106 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*107 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*108 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*109 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*110 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*111 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*112 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*113 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*114 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
|*115 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
| 116 |   NESTED LOOPS                    |                         |     2 |    42 |       |     2   (0)| 00:00:01 |
|*117 |    INDEX RANGE SCAN               | I_OBJAUTH1              |     1 |     8 |       |     2   (0)| 00:00:01 |
|*118 |    FIXED TABLE FULL               | X$KZSRO                 |     2 |    26 |       |     0   (0)| 00:00:01 |
|*119 |   FIXED TABLE FULL                | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
| 120 |   NESTED LOOPS                    |                         |     2 |    42 |       |     2   (0)| 00:00:01 |
|*121 |    INDEX RANGE SCAN               | I_OBJAUTH1              |     1 |     8 |       |     2   (0)| 00:00:01 |
|*122 |    FIXED TABLE FULL               | X$KZSRO                 |     2 |    26 |       |     0   (0)| 00:00:01 |
|*123 |     FIXED TABLE FULL              | X$KZSPR                 |     1 |    26 |       |     0   (0)| 00:00:01 |
| 124 |   VIEW                            |                         |     1 |    16 |       |     1   (0)| 00:00:01 |
| 125 |    SORT GROUP BY                  |                         |     1 |    86 |       |     1   (0)| 00:00:01 |
| 126 |     NESTED LOOPS                  |                         |     1 |    86 |       |     1   (0)| 00:00:01 |
| 127 |      MERGE JOIN CARTESIAN         |                         |     1 |    78 |       |     0   (0)| 00:00:01 |
| 128 |       NESTED LOOPS                |                         |     1 |    65 |       |     0   (0)| 00:00:01 |
|*129 |        INDEX UNIQUE SCAN          | I_OLAP_CUBES$           |     1 |    13 |       |     0   (0)| 00:00:01 |
|*130 |        TABLE ACCESS BY INDEX ROWID| OLAP_DIMENSIONALITY$    |     1 |    52 |       |     0   (0)| 00:00:01 |
|*131 |         INDEX RANGE SCAN          | I_OLAP_DIMENSIONALITY$  |     1 |       |       |     0   (0)| 00:00:01 |
| 132 |       BUFFER SORT                 |                         |     1 |    13 |       |     0   (0)| 00:00:01 |
| 133 |        INDEX FULL SCAN            | I_OLAP_CUBE_DIMENSIONS$ |     1 |    13 |       |     0   (0)| 00:00:01 |
|*134 |      INDEX RANGE SCAN             | I_OBJ1                  |     1 |     8 |       |     1   (0)| 00:00:01 |
| 135 |   NESTED LOOPS                    |                         |     1 |    30 |       |     2   (0)| 00:00:01 |
|*136 |    INDEX SKIP SCAN                | I_USER2                 |     1 |    20 |       |     1   (0)| 00:00:01 |
|*137 |    INDEX RANGE SCAN               | I_OBJ4                  |     1 |    10 |       |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(BITAND("S"."XPFLAGS",8388608)=8388608)
   2 - access("S"."OBJ#"=:B1)
   4 - access("EO"."OBJ#"=:B1)
   5 - filter(("O"."OWNER#"=USERENV('SCHEMAID') OR  EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$"
              "OA",SYS."X$KZSRO" "X$KZSRO" WHERE "GRANTEE#"="KZSROROL" AND "OA"."OBJ#"=:B1) OR  EXISTS (SELECT 0 FROM
              SYS."X$KZSPR" "X$KZSPR" WHERE "INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47)
              OR (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50)))) AND ("O"."TYPE#"<>1 AND
              "O"."TYPE#"<>10 OR "O"."TYPE#"=1 AND  (SELECT 1 FROM "SYS"."IND$" "I" WHERE "I"."OBJ#"=:B2 AND
              ("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR "I"."TYPE#"=7 OR
              "I"."TYPE#"=9))=1) AND (("O"."SPARE3"=USERENV('SCHEMAID') OR "O"."SPARE3"=1) OR ("O"."TYPE#"=57 OR
              "O"."TYPE#"=69 OR "O"."TYPE#"=72 OR "O"."TYPE#"=74 OR "O"."TYPE#"=101) OR ("O"."TYPE#"=1 OR "O"."TYPE#"=2 OR
              "O"."TYPE#"=3 OR "O"."TYPE#"=4 OR "O"."TYPE#"=5 OR "O"."TYPE#"=19 OR "O"."TYPE#"=20 OR "O"."TYPE#"=34 OR
              "O"."TYPE#"=35) AND  EXISTS (SELECT 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE "INST_ID"=USERENV('INSTANCE') AND
              ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR
              (-"KZSPRPRV")=(-50))) OR ("O"."TYPE#"=7 OR "O"."TYPE#"=8 OR "O"."TYPE#"=9 OR "O"."TYPE#"=28 OR
              "O"."TYPE#"=29 OR "O"."TYPE#"=30 OR "O"."TYPE#"=56) AND ( EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$"
              "OA",SYS."X$KZSRO" "X$KZSRO" WHERE "OA"."GRANTEE#"="KZSROROL" AND "OA"."OBJ#"=:B3 AND ("OA"."PRIVILEGE#"=12
              OR "OA"."PRIVILEGE#"=26)) OR  EXISTS (SELECT 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE
              "INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-144) OR (-"KZSPRPRV")=(-141) OR (-"KZSPRPRV")=(-241))))
              OR "O"."TYPE#"<>29 AND "O"."TYPE#"<>13 AND "O"."TYPE#"<>9 AND "O"."TYPE#"<>30 AND "O"."TYPE#"<>11 AND
              "O"."TYPE#"<>12 AND "O"."TYPE#"<>56 AND "O"."TYPE#"<>8 AND "O"."TYPE#"<>14 AND "O"."TYPE#"<>7 AND
              "O"."TYPE#"<>28 AND "O"."TYPE#"<>93 AND  EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$" "OBJAUTH$",SYS."X$KZSRO"
              "X$KZSRO" WHERE "GRANTEE#"="KZSROROL" AND "OBJ#"=:B4 AND ("PRIVILEGE#"=3 OR "PRIVILEGE#"=6 OR "PRIVILEGE#"=7
              OR "PRIVILEGE#"=9 OR "PRIVILEGE#"=10 OR "PRIVILEGE#"=11 OR "PRIVILEGE#"=12 OR "PRIVILEGE#"=16 OR
              "PRIVILEGE#"=17 OR "PRIVILEGE#"=18)) OR "O"."TYPE#"=13 AND ( EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$"
              "OA",SYS."X$KZSRO" "X$KZSRO" WHERE "OA"."GRANTEE#"="KZSROROL" AND "OA"."OBJ#"=:B5 AND ("OA"."PRIVILEGE#"=12
              OR "OA"."PRIVILEGE#"=26)) OR  EXISTS (SELECT 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE
              "INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-184) OR (-"KZSPRPRV")=(-181) OR (-"KZSPRPRV")=(-241))))
              OR "O"."TYPE#"=11 AND ( EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$" "OA","SYS"."DEPENDENCY$" "DEP",SYS."USER$"
              "U",SYS."OBJ$" "O",SYS."X$KZSRO" "X$KZSRO" WHERE "O"."NAME"=:B6 AND "O"."SPARE3"=:B7 AND "O"."TYPE#"=9 AND
              "O"."TYPE#"<>88 AND "O"."OWNER#"="U"."USER#" AND "DEP"."D_OBJ#"=:B8 AND "DEP"."P_OBJ#"="O"."OBJ#" AND
              "OA"."OBJ#"="O"."OBJ#" AND "OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL") OR  EXISTS (SELECT 0 FROM
              SYS."X$KZSPR" "X$KZSPR" WHERE ((-"KZSPRPRV")=(-141) OR (-"KZSPRPRV")=(-241)) AND
              "INST_ID"=USERENV('INSTANCE'))) OR "O"."TYPE#"=12 AND ( EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$"
              "OA","SYS"."TRIGGER$" "T",SYS."X$KZSRO" "X$KZSRO" WHERE "OA"."GRANTEE#"="KZSROROL" AND "T"."OBJ#"=:B9 AND
              BITAND("T"."PROPERTY",24)=0 AND "OA"."OBJ#"="T"."BASEOBJECT" AND "OA"."PRIVILEGE#"=26) OR  EXISTS (SELECT 0
              FROM SYS."X$KZSPR" "X$KZSPR" WHERE ((-"KZSPRPRV")=(-152) OR (-"KZSPRPRV")=(-241)) AND
              "INST_ID"=USERENV('INSTANCE'))) OR "O"."TYPE#"=14 AND ( EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$"
              "OA","SYS"."DEPENDENCY$" "DEP",SYS."USER$" "U",SYS."OBJ$" "O",SYS."X$KZSRO" "X$KZSRO" WHERE "O"."NAME"=:B10
              AND "O"."SPARE3"=:B11 AND "O"."TYPE#"=13 AND "O"."TYPE#"<>88 AND "O"."OWNER#"="U"."USER#" AND
              "DEP"."D_OBJ#"=:B12 AND "DEP"."P_OBJ#"="O"."OBJ#" AND "OA"."OBJ#"="O"."OBJ#" AND "OA"."PRIVILEGE#"=26 AND
              "OA"."GRANTEE#"="KZSROROL") OR  EXISTS (SELECT 0 FROM SYS."X$KZSPR" "X$KZSPR" WHERE ((-"KZSPRPRV")=(-181) OR
              (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))) OR "O"."TYPE#"=19 AND  EXISTS (SELECT 0)
   6 - filter(TO_NUMBER(:P)=1)
   7 - access("O"."SPARE3"="U"."USER#")
   9 - access("O"."OWNER#"="U"."USER#")
  10 - filter(BITAND("O"."FLAGS",128)=0 AND "O"."NAME"<>'_NEXT_OBJECT' AND
              "O"."NAME"<>'_default_auditing_options_' AND "O"."LINKNAME" IS NULL)
  13 - access("CX"."OWNER#"="CU"."USER#"(+))
  15 - access("T"."DATAOBJ#"="CX"."OBJ#"(+))
  17 - access("O"."OWNER#"="U"."USER#")
  19 - access("T"."TS#"="TS"."TS#")
  21 - access("T"."FILE#"="S"."FILE#"(+) AND "T"."BLOCK#"="S"."BLOCK#"(+) AND "T"."TS#"="S"."TS#"(+))
  23 - access("T"."OBJ#"="DS"."OBJ#"(+))
  25 - access("O"."OBJ#"="T"."OBJ#")
  26 - filter(BITAND("T"."PROPERTY",1)=0)
  28 - access("KSPPI"."INDX"="KSPPCV"."INDX")
  29 - filter("KSPPI"."KSPPINM"='_dml_monitoring_enabled')
  32 - filter(BITAND("O"."FLAGS",128)=0)
  34 - access("T"."BOBJ#"="CO"."OBJ#"(+))
  38 - access("OA"."OBJ#"=:B1)
  39 - filter("GRANTEE#"="KZSROROL")
  40 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR
              (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50)))
  41 - filter("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR
              "I"."TYPE#"=7 OR "I"."TYPE#"=9)
  42 - access("I"."OBJ#"=:B1)
  43 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR
              (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50)))
  45 - access("OA"."OBJ#"=:B1)
       filter("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26)
  46 - filter("OA"."GRANTEE#"="KZSROROL")
  47 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-144) OR (-"KZSPRPRV")=(-141) OR
              (-"KZSPRPRV")=(-241)))
  49 - access("OBJ#"=:B1)
       filter("PRIVILEGE#"=3 OR "PRIVILEGE#"=6 OR "PRIVILEGE#"=7 OR "PRIVILEGE#"=9 OR "PRIVILEGE#"=10 OR
              "PRIVILEGE#"=11 OR "PRIVILEGE#"=12 OR "PRIVILEGE#"=16 OR "PRIVILEGE#"=17 OR "PRIVILEGE#"=18)
  50 - filter("GRANTEE#"="KZSROROL")
  52 - access("OA"."OBJ#"=:B1)
       filter("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26)
  53 - filter("OA"."GRANTEE#"="KZSROROL")
  54 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-184) OR (-"KZSPRPRV")=(-181) OR
              (-"KZSPRPRV")=(-241)))
  60 - access("O"."SPARE3"=:B1 AND "O"."NAME"=:B2 AND "O"."TYPE#"=9)
       filter("O"."TYPE#"=9 AND "O"."TYPE#"<>88)
  63 - access("O"."OWNER#"="U"."USER#")
  64 - access("OA"."OBJ#"="O"."OBJ#" AND "OA"."GRANTEE#"="KZSROROL" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL")
  65 - access("DEP"."D_OBJ#"=:B1)
  66 - filter("DEP"."P_OBJ#"="O"."OBJ#")
  67 - filter(((-"KZSPRPRV")=(-141) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))
  70 - filter(BITAND("T"."PROPERTY",24)=0)
  71 - access("T"."OBJ#"=:B1)
  72 - access("OA"."OBJ#"="T"."BASEOBJECT" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26)
  73 - filter("OA"."GRANTEE#"="KZSROROL")
  74 - filter(((-"KZSPRPRV")=(-152) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))
  80 - access("O"."SPARE3"=:B1 AND "O"."NAME"=:B2 AND "O"."TYPE#"=13)
       filter("O"."TYPE#"=13 AND "O"."TYPE#"<>88)
  83 - access("O"."OWNER#"="U"."USER#")
  84 - access("OA"."OBJ#"="O"."OBJ#" AND "OA"."GRANTEE#"="KZSROROL" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL")
  85 - access("DEP"."D_OBJ#"=:B1)
  86 - filter("DEP"."P_OBJ#"="O"."OBJ#")
  87 - filter(((-"KZSPRPRV")=(-181) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE'))
  91 - access("OBJ#"=:B1)
  92 - access("BO#"="OBJ#" AND "PRIVILEGE#"=9)
       filter("PRIVILEGE#"=9)
  93 - filter("GRANTEE#"="KZSROROL")
  94 - filter((-"KZSPRPRV")=(-109) AND "INST_ID"=USERENV('INSTANCE'))
  95 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-189) OR (-"KZSPRPRV")=(-190) OR
              (-"KZSPRPRV")=(-191) OR (-"KZSPRPRV")=(-192)))
  96 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-200) OR (-"KZSPRPRV")=(-201) OR
              (-"KZSPRPRV")=(-202) OR (-"KZSPRPRV")=(-203) OR (-"KZSPRPRV")=(-204)))
  97 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-251) OR (-"KZSPRPRV")=(-252) OR
              (-"KZSPRPRV")=(-253) OR (-"KZSPRPRV")=(-254)))
  98 - filter((-"KZSPRPRV")=12 AND "INST_ID"=USERENV('INSTANCE'))
  99 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-246) OR (-"KZSPRPRV")=(-247) OR
              (-"KZSPRPRV")=(-248) OR (-"KZSPRPRV")=(-249)))
 102 - filter((-"KZSPRPRV")=(-265) AND "INST_ID"=USERENV('INSTANCE'))
 103 - filter(((-"KZSPRPRV")=(-177) OR (-"KZSPRPRV")=(-178)) AND "INST_ID"=USERENV('INSTANCE'))
 104 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-205) OR (-"KZSPRPRV")=(-206) OR
              (-"KZSPRPRV")=(-207) OR (-"KZSPRPRV")=(-208)))
 105 - filter(((-"KZSPRPRV")=(-222) OR (-"KZSPRPRV")=(-223)) AND "INST_ID"=USERENV('INSTANCE'))
 106 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-258) OR (-"KZSPRPRV")=(-259) OR
              (-"KZSPRPRV")=(-260) OR (-"KZSPRPRV")=(-261)))
 107 - filter(((-"KZSPRPRV")=(-268) OR (-"KZSPRPRV")=(-267)) AND "INST_ID"=USERENV('INSTANCE'))
 108 - filter(((-"KZSPRPRV")=(-265) OR (-"KZSPRPRV")=(-266)) AND "INST_ID"=USERENV('INSTANCE'))
 109 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR
              (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR (-"KZSPRPRV")=(-50)))
 110 - filter(((-"KZSPRPRV")=(-277) OR (-"KZSPRPRV")=(-278)) AND "INST_ID"=USERENV('INSTANCE'))
 111 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-292) OR (-"KZSPRPRV")=(-293) OR
              (-"KZSPRPRV")=(-294)))
 112 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-282) OR (-"KZSPRPRV")=(-283) OR
              (-"KZSPRPRV")=(-284) OR (-"KZSPRPRV")=(-285)))
 113 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-302) OR (-"KZSPRPRV")=(-303) OR
              (-"KZSPRPRV")=(-304) OR (-"KZSPRPRV")=(-305) OR (-"KZSPRPRV")=(-306) OR (-"KZSPRPRV")=(-307)))
 114 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-315) OR (-"KZSPRPRV")=(-316) OR
              (-"KZSPRPRV")=(-317) OR (-"KZSPRPRV")=(-318)))
 115 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-320) OR (-"KZSPRPRV")=(-321) OR
              (-"KZSPRPRV")=(-322)))
 117 - access("OBJ#"=:B1)
 118 - filter("GRANTEE#"="KZSROROL")
 119 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-309) OR (-"KZSPRPRV")=(-310) OR
              (-"KZSPRPRV")=(-311) OR (-"KZSPRPRV")=(-312) OR (-"KZSPRPRV")=(-313)))
 121 - access("OBJ#"=:B1)
 122 - filter("GRANTEE#"="KZSROROL")
 123 - filter("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-302) OR (-"KZSPRPRV")=(-303) OR
              (-"KZSPRPRV")=(-304) OR (-"KZSPRPRV")=(-305) OR (-"KZSPRPRV")=(-306) OR (-"KZSPRPRV")=(-307)))
 129 - access("C"."OBJ#"=:B1)
 130 - filter("DIML"."DIMENSION_TYPE"=11)
 131 - access("DIML"."DIMENSIONED_OBJECT_ID"=:B1 AND "DIML"."DIMENSIONED_OBJECT_TYPE"=1)
 134 - access("DIML"."DIMENSION_ID"="DO"."OBJ#")
       filter("DO"."OBJ#"="DIM"."OBJ#")
 136 - access("U2"."TYPE#"=2 AND "U2"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_edition_id')))
       filter("U2"."TYPE#"=2 AND "U2"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_edition_id')))
 137 - access("O2"."DATAOBJ#"=:B1 AND "O2"."TYPE#"=88 AND "O2"."OWNER#"="U2"."USER#")
Запрос выполнился мгновенно, не прочитал ни одного блока. Но если бы мы выполнили exec :p := 1, то запрос бы ушел в "туман". План один и тот же. В примере _Nikotin , конечно, не очень хорошо, что в 10g функция один раз вызвалась (если мы заменим dual на огромную таблицу, то разницы не будет, функция вызовется один раз, таблица читаться не будет). Т.е. проблемы такое поведение может не составлять. Поэтому и нужен тесткейс, т.к. Оракл необходимый функционал имеет.
20 сен 11, 03:38    [11302338]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Alexander Anokhin
asaev
чего котенку в организме не хватает?

Ну как вариант можно обернуть в подзапрос и запретить слияние и проталкивание предикатов. Это допустимо в твоем случае?
Меня давно интересует вопрос, как можно отключить проталкивание предикатов, по крайней мере начиная с 10g. В 9i по-моему какой-то трюк был. Хинта вроде нет (или я не знаю), /*+ no_push_pred */ для других целей.
20 сен 11, 03:41    [11302342]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
Alexander Anokhin
Member

Откуда: Хабаровск
Сообщений: 500
wurdu
Alexander Anokhin
пропущено...

Ну как вариант можно обернуть в подзапрос и запретить слияние и проталкивание предикатов. Это допустимо в твоем случае?
Меня давно интересует вопрос, как можно отключить проталкивание предикатов, по крайней мере начиная с 10g. В 9i по-моему какой-то трюк был. Хинта вроде нет (или я не знаю), /*+ no_push_pred */ для других целей.

ну например rownum во view добавить
20 сен 11, 06:49    [11302385]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
Alexander Anokhin
Member

Откуда: Хабаровск
Сообщений: 500
wurdu
... Возьмем пример Alexander Anokhin
...Запрос выполнился мгновенно, не прочитал ни одного блока.

Это может смутить автора и не только.
У wurdu "оптимистический" вариант, где шаг FILTER (filter(NULL IS NOT NULL) или filter(TO_NUMBER(:P)=1)) является родительской веткой запроса.
В последнем случае шаг 6:
wurdu
---------------------------------------------------------------------------------------------------------------------
| Id  | Operation                         | Name                    | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                  |                         |    23M|    53G|       | 76890   (9)| 00:15:23 |
|*  1 |  TABLE ACCESS BY INDEX ROWID      | SUM$                    |     1 |    26 |       |     0   (0)| 00:00:01 |
|*  2 |   INDEX UNIQUE SCAN               | I_SUM$_1                |     1 |       |       |     0   (0)| 00:00:01 |
|   3 |  TABLE ACCESS BY INDEX ROWID      | OBJ$                    |     1 |    30 |       |     3   (0)| 00:00:01 |
|*  4 |   INDEX RANGE SCAN                | I_OBJ1                  |     1 |       |       |     2   (0)| 00:00:01 |
|*  5 |  FILTER                           |                         |       |       |       |            |          |
|*  6 |   FILTER                          |                         |       |       |       |            |          |
|*  7 |    HASH JOIN                      |                         |   567M|  1316G|       | 76890   (9)| 00:15:23 |
|   8 |     TABLE ACCESS FULL             | USER$                   |    85 |  1445 |       |     3   (0)| 00:00:01 |
...
---------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(BITAND("S"."XPFLAGS",8388608)=8388608)
   2 - access("S"."OBJ#"=:B1)
   4 - access("EO"."OBJ#"=:B1)
...
   6 - filter(TO_NUMBER(:P)=1)
...

Шаги 1-4 - скалярные подзапросы будут выполнены, только если шаг 5 вернет строки.

Примером выше я показывал, что это не всегда будет так. И что тезис "runtime engine не будет выполнять лишний код" не всегда верен.
В моем предыдущем примере нужный нам FILTER был шагом 20 и пока выполнение дойдет до этого шага будут выполнены операции 3-20
Alexander Anokhin
--------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                                | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                                         |               |   344 |   238K|  2893  (18)| 00:00:01 |
|*  1 |  TABLE ACCESS BY INDEX ROWID                             | SUM$          |     1 |    26 |     0   (0)| 00:00:01 |
|*  2 |   INDEX UNIQUE SCAN                                      | I_SUM$_1      |     1 |       |     0   (0)| 00:00:01 |
|*  3 |  FILTER                                                  |               |       |       |            |          |
|*  4 |   HASH JOIN RIGHT OUTER                                  |               |  2878 |  1992K|  2893  (18)| 00:00:01 |
|   5 |    TABLE ACCESS FULL                                     | SEG$          | 11129 |   521K|   233  (17)| 00:00:01 |
|*  6 |    HASH JOIN RIGHT OUTER                                 |               |  2864 |  1848K|  2653  (18)| 00:00:01 |
|   7 |     TABLE ACCESS FULL                                    | USER$         |  8179 |   103K|   229  (11)| 00:00:01 |
|*  8 |     HASH JOIN RIGHT OUTER                                |               |  2864 |  1812K|  2418  (19)| 00:00:01 |
|   9 |      TABLE ACCESS FULL                                   | OBJ$          | 54856 |   428K|   440  (16)| 00:00:01 |
|* 10 |      HASH JOIN                                           |               |  2864 |  1790K|  1946  (18)| 00:00:01 |
|  11 |       TABLE ACCESS FULL                                  | USER$         |  8179 |   103K|   229  (11)| 00:00:01 |
|* 12 |       HASH JOIN                                          |               |  2864 |  1753K|  1711  (19)| 00:00:01 |
|  13 |        NESTED LOOPS OUTER                                |               |  2864 |  1655K|  1128   (9)| 00:00:01 |
|* 14 |         HASH JOIN                                        |               |  2864 |  1574K|  1042  (10)| 00:00:01 |
|  15 |          MERGE JOIN CARTESIAN                            |               |    99 | 47322 |    44  (14)| 00:00:01 |
|* 16 |           HASH JOIN                                      |               |     1 |   454 |     3 (100)| 00:00:01 |
|  17 |            MERGE JOIN CARTESIAN                          |               |     1 |   183 |     1 (100)| 00:00:01 |
|  18 |             VIEW                                         | ALL_OBJECTS   |     1 |   128 |     5 (100)| 00:00:01 |
|* 19 |              FILTER                                      |               |       |       |            |          |
|* 20 |               FILTER                                     |               |       |       |            |          |
|* 21 |                HASH JOIN                                 |               | 54715 |  4541K|  1078  (47)| 00:00:01 |
|  22 |                 TABLE ACCESS FULL                        | USER$         |  8179 |   103K|   229  (11)| 00:00:01 |
...
--------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter(BITAND("S"."XPFLAGS",8388608)=8388608)
   2 - access("S"."OBJ#"=:B1)
 ...
  20 - filter(NULL IS NOT NULL)
...
 



Или например, берем вариант wurdu с биндами:
SQL > var p number;
SQL > exec :p := 2;

PL/SQL procedure successfully completed.

SQL > set autotrace traceonly stat
SQL > select --+ gather_plan_statistics
  2          *
  3     from all_objects,
  4          all_tables
  5    where :p = 0;

no rows selected


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      10891  consistent gets
          0  physical reads
          0  redo size
       2206  bytes sent via SQL*Net to client
        235  bytes received via SQL*Net from client
          1  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
          0  rows processed

В данном случае нужный нам FILTER это шаг 29, пока выполнение до него добралось были выполнены шаги 3-29, что ясно показывает столбец Starts
+ execution plan +runtime stats

-------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                        | Name          | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
-------------------------------------------------------------------------------------------------------------------------------------------------------
|*  1 |  TABLE ACCESS BY INDEX ROWID                     | SUM$          |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|*  2 |   INDEX UNIQUE SCAN                              | I_SUM$_1      |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|*  3 |  FILTER                                          |               |      1 |        |      0 |00:00:00.35 |   10891 |       |       |          |
|   4 |   MERGE JOIN CARTESIAN                           |               |      1 |     59M|      0 |00:00:00.35 |   10891 |       |       |          |
|*  5 |    HASH JOIN RIGHT OUTER                         |               |      1 |   2878 |   2833 |00:00:00.34 |   10891 |  1648K|  1199K| 1734K (0)|
|   6 |     TABLE ACCESS FULL                            | SEG$          |      1 |  11129 |  12413 |00:00:00.01 |     791 |       |       |          |
|*  7 |     HASH JOIN RIGHT OUTER                        |               |      1 |   2864 |   2833 |00:00:00.28 |   10100 |  1391K|  1391K| 1594K (0)|
|   8 |      TABLE ACCESS FULL                           | USER$         |      1 |   8179 |  11407 |00:00:00.03 |    1146 |       |       |          |
|*  9 |      HASH JOIN RIGHT OUTER                       |               |      1 |   2864 |   2833 |00:00:00.25 |    8954 |  2756K|  1764K| 3568K (0)|
|  10 |       TABLE ACCESS FULL                          | OBJ$          |      1 |  54856 |  56973 |00:00:00.01 |    1596 |       |       |          |
|* 11 |       HASH JOIN                                  |               |      1 |   2864 |   2833 |00:00:00.16 |    7358 |  1391K|  1391K| 1588K (0)|
|  12 |        TABLE ACCESS FULL                         | USER$         |      1 |   8179 |  11407 |00:00:00.01 |    1146 |       |       |          |
|* 13 |        HASH JOIN                                 |               |      1 |   2864 |   2833 |00:00:00.13 |    6212 |  1072K|  1072K| 1357K (0)|
|  14 |         NESTED LOOPS OUTER                       |               |      1 |   2864 |   3199 |00:00:00.09 |    4616 |       |       |          |
|* 15 |          HASH JOIN                               |               |      1 |   2864 |   3199 |00:00:00.08 |    4348 |   980K|   980K| 1231K (0)|
|  16 |           MERGE JOIN CARTESIAN                   |               |      1 |     99 |    103 |00:00:00.01 |     263 |       |       |          |
|* 17 |            HASH JOIN                             |               |      1 |      1 |      1 |00:00:00.01 |       0 |  1496K|  1496K|  635K (0)|
|* 18 |             FIXED TABLE FULL                     | X$KSPPI       |      1 |      1 |      1 |00:00:00.01 |       0 |       |       |          |
|  19 |             FIXED TABLE FULL                     | X$KSPPCV      |      1 |    100 |   1495 |00:00:00.01 |       0 |       |       |          |
|  20 |            BUFFER SORT                           |               |      1 |     99 |    103 |00:00:00.01 |     263 |  6144 |  6144 | 6144  (0)|
|  21 |             TABLE ACCESS FULL                    | TS$           |      1 |     99 |    103 |00:00:00.01 |     263 |       |       |          |
|* 22 |           TABLE ACCESS FULL                      | TAB$          |      1 |   2864 |   3199 |00:00:00.06 |    4085 |       |       |          |
|  23 |          TABLE ACCESS BY INDEX ROWID             | OBJ$          |   3199 |      1 |     89 |00:00:00.01 |     268 |       |       |          |
|* 24 |           INDEX UNIQUE SCAN                      | I_OBJ1        |   3199 |      1 |     89 |00:00:00.01 |     179 |       |       |          |
|* 25 |         TABLE ACCESS FULL                        | OBJ$          |      1 |  54856 |  56247 |00:00:00.06 |    1596 |       |       |          |
|  26 |    BUFFER SORT                                   |               |   2833 |  20743 |      0 |00:00:00.01 |       0 |  1024 |  1024 |          |
|  27 |     VIEW                                         | ALL_OBJECTS   |      1 |  20743 |      0 |00:00:00.01 |       0 |       |       |          |
|* 28 |      FILTER                                      |               |      1 |        |      0 |00:00:00.01 |       0 |       |       |          |
|* 29 |       FILTER                                     |               |      1 |        |      0 |00:00:00.01 |       0 |       |       |          |
|* 30 |        HASH JOIN                                 |               |      0 |  54715 |      0 |00:00:00.01 |       0 |  1173K|  1173K|          |
|  31 |         TABLE ACCESS FULL                        | USER$         |      0 |   8179 |      0 |00:00:00.01 |       0 |       |       |          |
|* 32 |         TABLE ACCESS FULL                        | OBJ$          |      0 |  54715 |      0 |00:00:00.01 |       0 |       |       |          |
|* 33 |       TABLE ACCESS BY INDEX ROWID                | IND$          |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 34 |        INDEX UNIQUE SCAN                         | I_IND1        |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 35 |        HASH JOIN                                 |               |      0 |      1 |      0 |00:00:00.01 |       0 |  1123K|  1123K|          |
|* 36 |         INDEX RANGE SCAN                         | I_OBJAUTH1    |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  37 |         FIXED TABLE FULL                         | X$KZSRO       |      0 |    100 |      0 |00:00:00.01 |       0 |       |       |          |
|* 38 |         FIXED TABLE FULL                         | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 39 |          FIXED TABLE FULL                        | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 40 |           HASH JOIN                              |               |      0 |      1 |      0 |00:00:00.01 |       0 |  1123K|  1123K|          |
|* 41 |            INDEX RANGE SCAN                      | I_OBJAUTH1    |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  42 |            FIXED TABLE FULL                      | X$KZSRO       |      0 |    100 |      0 |00:00:00.01 |       0 |       |       |          |
|* 43 |            HASH JOIN                             |               |      0 |      1 |      0 |00:00:00.01 |       0 |  1123K|  1123K|          |
|* 44 |             INDEX RANGE SCAN                     | I_OBJAUTH1    |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  45 |             FIXED TABLE FULL                     | X$KZSRO       |      0 |    100 |      0 |00:00:00.01 |       0 |       |       |          |
|* 46 |             FIXED TABLE FULL                     | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 47 |              TABLE ACCESS BY INDEX ROWID         | DEPENDENCY$   |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  48 |               NESTED LOOPS                       |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  49 |                NESTED LOOPS                      |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  50 |                 MERGE JOIN CARTESIAN             |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 51 |                  TABLE ACCESS BY INDEX ROWID     | OBJ$          |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 52 |                   INDEX RANGE SCAN               | I_OBJ2        |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  53 |                  BUFFER SORT                     |               |      0 |    100 |      0 |00:00:00.01 |       0 | 73728 | 73728 |          |
|  54 |                   FIXED TABLE FULL               | X$KZSRO       |      0 |    100 |      0 |00:00:00.01 |       0 |       |       |          |
|* 55 |                 INDEX RANGE SCAN                 | I_OBJAUTH1    |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 56 |                INDEX RANGE SCAN                  | I_DEPENDENCY1 |      0 |      3 |      0 |00:00:00.01 |       0 |       |       |          |
|* 57 |               FIXED TABLE FULL                   | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 58 |                HASH JOIN                         |               |      0 |      1 |      0 |00:00:00.01 |       0 |   986K|   986K|          |
|  59 |                 NESTED LOOPS                     |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 60 |                  TABLE ACCESS BY INDEX ROWID     | TRIGGER$      |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 61 |                   INDEX UNIQUE SCAN              | I_TRIGGER2    |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 62 |                  INDEX RANGE SCAN                | I_OBJAUTH1    |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  63 |                 FIXED TABLE FULL                 | X$KZSRO       |      0 |    100 |      0 |00:00:00.01 |       0 |       |       |          |
|* 64 |                 FIXED TABLE FULL                 | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 65 |                  FIXED TABLE FULL                | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 66 |                   TABLE ACCESS BY INDEX ROWID    | DEPENDENCY$   |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  67 |                    NESTED LOOPS                  |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  68 |                     NESTED LOOPS                 |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  69 |                      MERGE JOIN CARTESIAN        |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 70 |                       TABLE ACCESS BY INDEX ROWID| OBJ$          |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 71 |                        INDEX RANGE SCAN          | I_OBJ2        |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  72 |                       BUFFER SORT                |               |      0 |    100 |      0 |00:00:00.01 |       0 | 73728 | 73728 |          |
|  73 |                        FIXED TABLE FULL          | X$KZSRO       |      0 |    100 |      0 |00:00:00.01 |       0 |       |       |          |
|* 74 |                      INDEX RANGE SCAN            | I_OBJAUTH1    |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 75 |                     INDEX RANGE SCAN             | I_DEPENDENCY1 |      0 |      3 |      0 |00:00:00.01 |       0 |       |       |          |
|* 76 |                    FIXED TABLE FULL              | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 77 |                     FIXED TABLE FULL             | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 78 |                      FIXED TABLE FULL            | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 79 |                       FIXED TABLE FULL           | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 80 |                        FIXED TABLE FULL          | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 81 |                         FIXED TABLE FULL         | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 82 |                          FIXED TABLE FULL        | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 83 |                           FIXED TABLE FULL       | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 84 |                            FIXED TABLE FULL      | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 85 |                             FIXED TABLE FULL     | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 86 |                              FIXED TABLE FULL    | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 87 |                               FIXED TABLE FULL   | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 88 |                                FIXED TABLE FULL  | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 89 |                                 FIXED TABLE FULL | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 90 |                                  FIXED TABLE FULL| X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  91 |                                   VIEW           |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  92 |                                    FAST DUAL     |               |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 93 |   HASH JOIN                                      |               |      0 |      1 |      0 |00:00:00.01 |       0 |  1173K|  1173K|          |
|* 94 |    INDEX RANGE SCAN                              | I_OBJAUTH1    |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  95 |    FIXED TABLE FULL                              | X$KZSRO       |      0 |    100 |      0 |00:00:00.01 |       0 |       |       |          |
|* 96 |    FIXED TABLE FULL                              | X$KZSPR       |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
-------------------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter(BITAND("S"."XPFLAGS",8388608)=8388608)
   2 - access("S"."OBJ#"=:B1)
   3 - filter(("O"."OWNER#"=USERENV('SCHEMAID') OR  IS NOT NULL OR  IS NOT NULL))
   5 - access("T"."FILE#"="S"."FILE#" AND "T"."BLOCK#"="S"."BLOCK#" AND "T"."TS#"="S"."TS#")
   7 - access("CX"."OWNER#"="CU"."USER#")
   9 - access("T"."DATAOBJ#"="CX"."OBJ#")
  11 - access("O"."OWNER#"="U"."USER#")
  13 - access("O"."OBJ#"="T"."OBJ#")
  15 - access("T"."TS#"="TS"."TS#")
  17 - access("KSPPI"."INDX"="KSPPCV"."INDX")
  18 - filter("KSPPI"."KSPPINM"='_dml_monitoring_enabled')
  22 - filter(BITAND("T"."PROPERTY",1)=0)
  24 - access("T"."BOBJ#"="CO"."OBJ#")
  25 - filter(BITAND("O"."FLAGS",128)=0)
  28 - filter(((("O"."TYPE#"<>1 AND "O"."TYPE#"<>10) OR ("O"."TYPE#"=1 AND =1)) AND (INTERNAL_FUNCTION("O"."OWNER#") OR (( IS NOT NULL OR  IS
              NOT NULL) AND INTERNAL_FUNCTION("O"."TYPE#")) OR (INTERNAL_FUNCTION("O"."TYPE#") AND  IS NOT NULL) OR ("O"."TYPE#"<>29 AND "O"."TYPE#"<>13 AND
              "O"."TYPE#"<>9 AND "O"."TYPE#"<>11 AND "O"."TYPE#"<>30 AND "O"."TYPE#"<>56 AND "O"."TYPE#"<>12 AND "O"."TYPE#"<>7 AND "O"."TYPE#"<>8 AND
              "O"."TYPE#"<>14 AND "O"."TYPE#"<>28 AND  IS NOT NULL) OR (( IS NOT NULL OR  IS NOT NULL) AND "O"."TYPE#"=13) OR (( IS NOT NULL OR  IS NOT
              NULL) AND "O"."TYPE#"=11) OR (( IS NOT NULL OR  IS NOT NULL) AND "O"."TYPE#"=12) OR ("O"."TYPE#"=6 AND  IS NOT NULL) OR (( IS NOT NULL OR  IS
              NOT NULL) AND "O"."TYPE#"=14) OR ("O"."TYPE#"=22 AND  IS NOT NULL) OR INTERNAL_FUNCTION("O"."TYPE#") OR ("O"."TYPE#"=46 AND  IS NOT NULL) OR
              ("O"."TYPE#"=62 AND  IS NOT NULL) OR ("O"."TYPE#"=66 AND  IS NOT NULL) OR ("O"."TYPE#"=33 AND  IS NOT NULL) OR ("O"."TYPE#"=48 AND  IS NOT
              NULL) OR ("O"."TYPE#"=68 AND  IS NOT NULL) OR ("O"."TYPE#"=23 AND  IS NOT NULL) OR ("O"."TYPE#"=42 AND  IS NOT NULL) OR ("O"."TYPE#"=32 AND
              IS NOT NULL) OR ("O"."TYPE#"=44 AND  IS NOT NULL) OR ("O"."TYPE#"=59 AND  IS NOT NULL) OR (INTERNAL_FUNCTION("O"."TYPE#") AND  IS NOT NULL) OR
              ("O"."TYPE#"=81 AND  IS NOT NULL) OR ("O"."TYPE#"=55 AND =1))))
  29 - filter(:P=0)
  30 - access("O"."OWNER#"="U"."USER#")
  32 - filter(("O"."LINKNAME" IS NULL AND "O"."NAME"<>'_NEXT_OBJECT' AND "O"."NAME"<>'_default_auditing_options_' AND
              BITAND("O"."FLAGS",128)=0))
  33 - filter(("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR "I"."TYPE#"=7 OR "I"."TYPE#"=9))
  34 - access("I"."OBJ#"=:B1)
  35 - access("OA"."GRANTEE#"="KZSROROL")
  36 - access("OA"."OBJ#"=:B1)
       filter(("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26))
  38 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-144) OR (-"KZSPRPRV")=(-141) OR (-"KZSPRPRV")=(-241))))
  39 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR
              (-"KZSPRPRV")=(-50))))
  40 - access("GRANTEE#"="KZSROROL")
  41 - access("OBJ#"=:B1)
       filter(("PRIVILEGE#"=3 OR "PRIVILEGE#"=6 OR "PRIVILEGE#"=7 OR "PRIVILEGE#"=9 OR "PRIVILEGE#"=10 OR "PRIVILEGE#"=11 OR "PRIVILEGE#"=12
              OR "PRIVILEGE#"=16 OR "PRIVILEGE#"=17 OR "PRIVILEGE#"=18))
  43 - access("OA"."GRANTEE#"="KZSROROL")
  44 - access("OA"."OBJ#"=:B1)
       filter(("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26))
  46 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-184) OR (-"KZSPRPRV")=(-181) OR (-"KZSPRPRV")=(-241))))
  47 - filter("DEP"."P_OBJ#"="SPECOBJ"."OBJ#")
  51 - filter("SPECOBJ"."TYPE#"=9)
  52 - access("SPECOBJ"."OWNER#"=:B1 AND "SPECOBJ"."NAME"=:B2)
  55 - access("OA"."OBJ#"="SPECOBJ"."OBJ#" AND "OA"."GRANTEE#"="KZSROROL" AND "OA"."PRIVILEGE#"=26)
       filter(("OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL"))
  56 - access("DEP"."D_OBJ#"=:B1)
  57 - filter((((-"KZSPRPRV")=(-141) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE')))
  58 - access("OA"."GRANTEE#"="KZSROROL")
  60 - filter(BITAND("T"."PROPERTY",24)=0)
  61 - access("T"."OBJ#"=:B1)
  62 - access("OA"."OBJ#"="T"."BASEOBJECT" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26)
  64 - filter((((-"KZSPRPRV")=(-152) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE')))
  65 - filter(((-"KZSPRPRV")=(-109) AND "INST_ID"=USERENV('INSTANCE')))
  66 - filter("DEP"."P_OBJ#"="SPECOBJ"."OBJ#")
  70 - filter("SPECOBJ"."TYPE#"=13)
  71 - access("SPECOBJ"."OWNER#"=:B1 AND "SPECOBJ"."NAME"=:B2)
  74 - access("OA"."OBJ#"="SPECOBJ"."OBJ#" AND "OA"."GRANTEE#"="KZSROROL" AND "OA"."PRIVILEGE#"=26)
       filter(("OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL"))
  75 - access("DEP"."D_OBJ#"=:B1)
  76 - filter((((-"KZSPRPRV")=(-181) OR (-"KZSPRPRV")=(-241)) AND "INST_ID"=USERENV('INSTANCE')))
  77 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-189) OR (-"KZSPRPRV")=(-190) OR (-"KZSPRPRV")=(-191) OR
              (-"KZSPRPRV")=(-192))))
  78 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-251) OR (-"KZSPRPRV")=(-252) OR (-"KZSPRPRV")=(-253) OR
              (-"KZSPRPRV")=(-254))))
  79 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-246) OR (-"KZSPRPRV")=(-247) OR (-"KZSPRPRV")=(-248) OR
              (-"KZSPRPRV")=(-249))))
  80 - filter(((-"KZSPRPRV")=(-265) AND "INST_ID"=USERENV('INSTANCE')))
  81 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-200) OR (-"KZSPRPRV")=(-201) OR (-"KZSPRPRV")=(-202) OR (-"KZSPRPRV")=(-203)
              OR (-"KZSPRPRV")=(-204))))
  82 - filter(((-"KZSPRPRV")=12 AND "INST_ID"=USERENV('INSTANCE')))
  83 - filter((((-"KZSPRPRV")=(-268) OR (-"KZSPRPRV")=(-267)) AND "INST_ID"=USERENV('INSTANCE')))
  84 - filter((((-"KZSPRPRV")=(-177) OR (-"KZSPRPRV")=(-178)) AND "INST_ID"=USERENV('INSTANCE')))
  85 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR
              (-"KZSPRPRV")=(-50))))
  86 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-205) OR (-"KZSPRPRV")=(-206) OR (-"KZSPRPRV")=(-207) OR
              (-"KZSPRPRV")=(-208))))
  87 - filter((((-"KZSPRPRV")=(-222) OR (-"KZSPRPRV")=(-223)) AND "INST_ID"=USERENV('INSTANCE')))
  88 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-258) OR (-"KZSPRPRV")=(-259) OR (-"KZSPRPRV")=(-260) OR
              (-"KZSPRPRV")=(-261))))
  89 - filter((((-"KZSPRPRV")=(-265) OR (-"KZSPRPRV")=(-266)) AND "INST_ID"=USERENV('INSTANCE')))
  90 - filter((((-"KZSPRPRV")=(-277) OR (-"KZSPRPRV")=(-278)) AND "INST_ID"=USERENV('INSTANCE')))
  93 - access("GRANTEE#"="KZSROROL")
  94 - access("OA"."OBJ#"=:B1)
  96 - filter(("INST_ID"=USERENV('INSTANCE') AND ((-"KZSPRPRV")=(-45) OR (-"KZSPRPRV")=(-47) OR (-"KZSPRPRV")=(-48) OR (-"KZSPRPRV")=(-49) OR
              (-"KZSPRPRV")=(-50))))


Т.к. возможно, что это случай автора, лучше чтобы автор показал планы запросов.
20 сен 11, 08:53    [11302540]     Ответить | Цитировать Сообщить модератору
 Re: фильтр "1=0" в UNION ALL внутри INNER VIEW  [new]
Alexander Anokhin
Member

Откуда: Хабаровск
Сообщений: 500
Alexander Anokhin
В последнем случае шаг 6
Имелось ввиду:
В последнем примере wurdu это был шаг 6

Alexander Anokhin
Примером выше я показывал, что это не всегда будет так.

Имелось ввиду:
Примером выше я показывал, что это не всегда будет так и нужный шаг FILTER не всегда будет родительской веткой запроса.
20 сен 11, 08:59    [11302560]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить