powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не подхватывается индекс в запросе с union или union all
11 сообщений из 11, страница 1 из 1
Не подхватывается индекс в запросе с union или union all
    #39694396
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал таблицу и индекс по полю
Код: plsql
1.
2.
create table test55 as select * from all_objects;
alter table TEST55  add constraint TEST55_PK primary key (OBJECT_ID);



Почему при запросе
Код: plsql
1.
2.
3.
4.
select * from 
(select * from TEST55 t
) alls 
where alls.object_id in (select 1 from dual)

индекс подхватывается,а при запросе
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select * from 
(select * from TEST55 t
union all
 select 
 owner,
  object_name,
  subobject_name,
  null object_id,
  data_object_id,
  object_type,
  created,
  last_ddl_time,
  timestamp,
  status,
  temporary,
  generated,
  secondary from  all_objects) alls 
where alls.object_id in (select 1 from dual)


нет?

Каким образом можно сделать так чтобы индекс подхватывался, кроме явного указания хинтом?
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694416
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если без хинтов, то
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select * from TEST55 t where object_id in (select 1 from dual)
union all
 select 
 owner,
  object_name,
  subobject_name,
  null object_id,
  data_object_id,
  object_type,
  created,
  last_ddl_time,
  timestamp,
  status,
  temporary,
  generated,
  secondary from  all_objects where object_id in (select 1 from dual)
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694429
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начнем с того, что список полей во второй части UNION ALL не соответствует первой. Так-что не

Код: plsql
1.
create table test55 as select * from all_objects;



a:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table test55 as select owner,
 object_name,
 subobject_name,
 object_id,
data_object_id,
object_type,
created,
last_ddl_time,
timestamp,
status,
temporary,
generated,
secondary from  all_objects
/





Теперь, как я понимаю, object_id in (select 1 from dual) это в качестве примера а в действительности значений больше. Короче:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
SQL> explain plan for
  2  select alls.* from
  3  (select * from TEST55 t
  4  union all
  5   select
  6   owner,
  7    object_name,
  8    subobject_name,
  9    null object_id,
 10    data_object_id,
 11    object_type,
 12    created,
 13    last_ddl_time,
 14    timestamp,
 15    status,
 16    temporary,
 17    generated,
 18    secondary from  all_objects) alls,
 19  (select 1 object_id from dual) x
 20  where alls.object_id = x.object_id
 21  /

Explained.

SQL> select * from table(dbms_xplan.display)
  2  /

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2763386164

---------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                   |                    |     2 |   554 |     4   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                      |                    |     2 |   554 |     4   (0)| 00:00:01 |
|   2 |   FAST DUAL                        |                    |     1 |       |     2   (0)| 00:00:01 |
|   3 |   VIEW                             |                    |     2 |   554 |     2   (0)| 00:00:01 |
|   4 |    UNION-ALL                       |                    |       |       |            |          |
|   5 |     TABLE ACCESS BY INDEX ROWID    | TEST55             |     1 |   104 |     2   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|*  6 |      INDEX UNIQUE SCAN             | TEST55_PK          |     1 |       |     1   (0)| 00:00:01 |
|   7 |     TABLE ACCESS BY INDEX ROWID    | SUM$               |     1 |    11 |     1   (0)| 00:00:01 |
|*  8 |      INDEX UNIQUE SCAN             | I_SUM$_1           |     1 |       |     0   (0)| 00:00:01 |
|*  9 |     FILTER                         |                    |       |       |            |          |
|* 10 |      FILTER                        |                    |       |       |            |          |
|* 11 |       HASH JOIN                    |                    | 73548 |  9408K|   356   (5)| 00:00:01 |
|  12 |        TABLE ACCESS FULL           | USER$              |   141 |  2538 |     4   (0)| 00:00:01 |
|* 13 |        HASH JOIN                   |                    | 73548 |  8116K|   352   (5)| 00:00:01 |
|  14 |         INDEX FULL SCAN            | I_USER2            |   141 |  3384 |     1   (0)| 00:00:01 |
|* 15 |         TABLE ACCESS FULL          | OBJ$               | 73548 |  6392K|   351   (5)| 00:00:01 |
|  16 |      NESTED LOOPS                  |                    |     1 |    32 |     4   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|  17 |       NESTED LOOPS                 |                    |     1 |    23 |     3   (0)| 00:00:01 |
|  18 |        TABLE ACCESS BY INDEX ROWID | IND$               |     1 |    10 |     2   (0)| 00:00:01 |
|* 19 |         INDEX UNIQUE SCAN          | I_IND1             |     1 |       |     1   (0)| 00:00:01 |
|* 20 |        TABLE ACCESS CLUSTER        | TAB$               |     1 |    13 |     1   (0)| 00:00:01 |
|* 21 |       INDEX RANGE SCAN             | I_OBJ1             |     1 |     9 |     1   (0)| 00:00:01 |
|* 22 |      TABLE ACCESS CLUSTER          | TAB$               |     1 |    13 |     2   (0)| 00:00:01 |
|* 23 |       INDEX UNIQUE SCAN            | I_OBJ#             |     1 |       |     1   (0)| 00:00:01 |
|* 24 |      TABLE ACCESS BY INDEX ROWID   | SEQ$               |     1 |     8 |     1   (0)| 00:00:01 |
|* 25 |       INDEX UNIQUE SCAN            | I_SEQ1             |     1 |       |     0   (0)| 00:00:01 |
|* 26 |      TABLE ACCESS BY INDEX ROWID   | IND$               |     1 |     8 |     2   (0)| 00:00:01 |
|* 27 |       INDEX UNIQUE SCAN            | I_IND1             |     1 |       |     1   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|  28 |      NESTED LOOPS                  |                    |     1 |    18 |     2   (0)| 00:00:01 |
|* 29 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|* 30 |       INDEX RANGE SCAN             | I_OBJAUTH1         |     1 |    12 |     1   (0)| 00:00:01 |
|* 31 |      HASH JOIN                     |                    |     1 |    25 |     3   (0)| 00:00:01 |
|  32 |       NESTED LOOPS                 |                    |     1 |    19 |     3   (0)| 00:00:01 |
|  33 |        TABLE ACCESS BY INDEX ROWID | IND$               |     1 |    10 |     2   (0)| 00:00:01 |
|* 34 |         INDEX UNIQUE SCAN          | I_IND1             |     1 |       |     1   (0)| 00:00:01 |
|* 35 |        INDEX RANGE SCAN            | I_OBJAUTH1         |     1 |     9 |     1   (0)| 00:00:01 |
|* 36 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|  37 |      NESTED LOOPS                  |                    |     1 |    18 |     2   (0)| 00:00:01 |
|* 38 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|* 39 |       INDEX RANGE SCAN             | I_OBJAUTH1         |     1 |    12 |     1   (0)| 00:00:01 |
|  40 |      NESTED LOOPS                  |                    |     1 |    18 |     2   (0)| 00:00:01 |
|* 41 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|* 42 |       INDEX RANGE SCAN             | I_OBJAUTH1         |     1 |    12 |     1   (0)| 00:00:01 |
|* 43 |      HASH JOIN                     |                    |     1 |    28 |     2   (0)| 00:00:01 |
|  44 |       NESTED LOOPS                 |                    |     1 |    22 |     2   (0)| 00:00:01 |
|  45 |        TABLE ACCESS BY INDEX ROWID | TABPART$           |     1 |    10 |     1   (0)| 00:00:01 |
|* 46 |         INDEX UNIQUE SCAN          | I_TABPART_OBJ$     |     1 |       |     0   (0)| 00:00:01 |
|* 47 |        INDEX RANGE SCAN            | I_OBJAUTH1         |     1 |    12 |     1   (0)| 00:00:01 |
|* 48 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|* 49 |      HASH JOIN                     |                    |     1 |    28 |     2   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|  50 |       NESTED LOOPS                 |                    |     1 |    22 |     2   (0)| 00:00:01 |
|  51 |        TABLE ACCESS BY INDEX ROWID | TABCOMPART$        |     1 |    10 |     1   (0)| 00:00:01 |
|* 52 |         INDEX UNIQUE SCAN          | I_TABCOMPART$      |     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            |     2 |    12 |     0   (0)| 00:00:01 |
|  55 |      NESTED LOOPS                  |                    |     1 |    82 |     8   (0)| 00:00:01 |
|  56 |       NESTED LOOPS                 |                    |     4 |    82 |     8   (0)| 00:00:01 |
|  57 |        NESTED LOOPS                |                    |     1 |    72 |     5   (0)| 00:00:01 |
|  58 |         NESTED LOOPS               |                    |     1 |    60 |     4   (0)| 00:00:01 |
|  59 |          MERGE JOIN CARTESIAN      |                    |     1 |    56 |     3   (0)| 00:00:01 |
|* 60 |           INDEX RANGE SCAN         | I_OBJ5             |     1 |    50 |     3   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|  61 |           BUFFER SORT              |                    |     2 |    12 |     0   (0)| 00:00:01 |
|* 62 |            FIXED TABLE FULL        | X$KZSRO            |     2 |    12 |     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 |    12 |     1   (0)| 00:00:01 |
|* 65 |        INDEX RANGE SCAN            | I_DEPENDENCY1      |     4 |       |     2   (0)| 00:00:01 |
|* 66 |       TABLE ACCESS BY INDEX ROWID  | DEPENDENCY$        |     1 |    10 |     3   (0)| 00:00:01 |
|  67 |      NESTED LOOPS                  |                    |     1 |    82 |     8   (0)| 00:00:01 |
|  68 |       NESTED LOOPS                 |                    |     4 |    82 |     8   (0)| 00:00:01 |
|  69 |        NESTED LOOPS                |                    |     1 |    72 |     5   (0)| 00:00:01 |
|  70 |         NESTED LOOPS               |                    |     1 |    60 |     4   (0)| 00:00:01 |
|  71 |          MERGE JOIN CARTESIAN      |                    |     1 |    56 |     3   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|* 72 |           INDEX RANGE SCAN         | I_OBJ5             |     1 |    50 |     3   (0)| 00:00:01 |
|  73 |           BUFFER SORT              |                    |     2 |    12 |     0   (0)| 00:00:01 |
|* 74 |            FIXED TABLE FULL        | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|* 75 |          INDEX RANGE SCAN          | I_USER2            |     1 |     4 |     1   (0)| 00:00:01 |
|* 76 |         INDEX RANGE SCAN           | I_OBJAUTH1         |     1 |    12 |     1   (0)| 00:00:01 |
|* 77 |        INDEX RANGE SCAN            | I_DEPENDENCY1      |     4 |       |     2   (0)| 00:00:01 |
|* 78 |       TABLE ACCESS BY INDEX ROWID  | DEPENDENCY$        |     1 |    10 |     3   (0)| 00:00:01 |
|* 79 |      HASH JOIN                     |                    |     1 |    32 |     2   (0)| 00:00:01 |
|  80 |       NESTED LOOPS                 |                    |     1 |    26 |     2   (0)| 00:00:01 |
|* 81 |        TABLE ACCESS BY INDEX ROWID | TRIGGER$           |     1 |    14 |     1   (0)| 00:00:01 |
|* 82 |         INDEX UNIQUE SCAN          | I_TRIGGER2         |     1 |       |     0   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|* 83 |        INDEX RANGE SCAN            | I_OBJAUTH1         |     1 |    12 |     1   (0)| 00:00:01 |
|* 84 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|* 85 |      HASH JOIN                     |                    |     1 |    38 |     3   (0)| 00:00:01 |
|  86 |       NESTED LOOPS                 |                    |     1 |    32 |     3   (0)| 00:00:01 |
|  87 |        NESTED LOOPS                |                    |     1 |    20 |     2   (0)| 00:00:01 |
|  88 |         TABLE ACCESS BY INDEX ROWID| TABSUBPART$        |     1 |    10 |     1   (0)| 00:00:01 |
|* 89 |          INDEX UNIQUE SCAN         | I_TABSUBPART$_OBJ$ |     1 |       |     0   (0)| 00:00:01 |
|  90 |         TABLE ACCESS BY INDEX ROWID| TABCOMPART$        |     1 |    10 |     1   (0)| 00:00:01 |
|* 91 |          INDEX UNIQUE SCAN         | I_TABCOMPART$      |     1 |       |     0   (0)| 00:00:01 |
|* 92 |        INDEX RANGE SCAN            | I_OBJAUTH1         |     1 |    12 |     1   (0)| 00:00:01 |
|* 93 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|  94 |      VIEW                          |                    |     1 |    13 |     2   (0)| 00:00:01 |
|  95 |       FAST DUAL                    |                    |     1 |       |     2   (0)| 00:00:01 |
|  96 |      NESTED LOOPS                  |                    |     1 |    18 |     2   (0)| 00:00:01 |
|* 97 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|* 98 |       INDEX RANGE SCAN             | I_OBJAUTH1         |     1 |    12 |     1   (0)| 00:00:01 |
|  99 |      NESTED LOOPS                  |                    |     1 |    15 |     2   (0)| 00:00:01 |
|*100 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|*101 |       INDEX RANGE SCAN             | I_OBJAUTH2         |     1 |     9 |     1   (0)| 00:00:01 |
| 102 |      SORT GROUP BY NOSORT          |                    |     1 |    35 |     9   (0)| 00:00:01 |
| 103 |       NESTED LOOPS                 |                    |     1 |    35 |     7   (0)| 00:00:01 |
| 104 |        NESTED LOOPS                |                    |     4 |    92 |     3   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|*105 |         INDEX UNIQUE SCAN          | I_OLAP_CUBES$      |     1 |    13 |     0   (0)| 00:00:01 |
| 106 |         TABLE ACCESS BY INDEX ROWID| DEPENDENCY$        |     4 |    40 |     3   (0)| 00:00:01 |
|*107 |          INDEX RANGE SCAN          | I_DEPENDENCY1      |     4 |       |     2   (0)| 00:00:01 |
|*108 |        INDEX RANGE SCAN            | I_OBJ1             |     1 |    12 |     1   (0)| 00:00:01 |
| 109 |      NESTED LOOPS                  |                    |     1 |    15 |     2   (0)| 00:00:01 |
|*110 |       FIXED TABLE FULL             | X$KZSRO            |     2 |    12 |     0   (0)| 00:00:01 |
|*111 |       INDEX RANGE SCAN             | I_OBJAUTH2         |     1 |     9 |     1   (0)| 00:00:01 |
|*112 |      TABLE ACCESS FULL             | USER_EDITIONING$   |     1 |     6 |     2   (0)| 00:00:01 |
|*113 |      TABLE ACCESS FULL             | USER_EDITIONING$   |     1 |     6 |     2   (0)| 00:00:01 |
| 114 |      NESTED LOOPS                  |                    |     1 |    29 |     2   (0)| 00:00:01 |
|*115 |       INDEX SKIP SCAN              | I_USER2            |     1 |    20 |     1   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
|*116 |       INDEX RANGE SCAN             | I_OBJ4             |     1 |     9 |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------

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

   6 - access("T"."OBJECT_ID"=1)
   8 - access("S"."OBJ#"=:B1)
   9 - filter(("O"."TYPE#"<>1 AND "O"."TYPE#"<>2 AND "O"."TYPE#"<>6 OR "O"."TYPE#"=1 AND  NOT
              EXISTS (SELECT 0 FROM "SYS"."OBJ$" "IO","SYS"."TAB$" "T","SYS"."IND$" "I" WHERE "I"."OBJ#"=:B1
              AND "I"."BO#"="T"."OBJ#" AND BITAND("T"."PROPERTY",36893488147419103232)=36893488147419103232

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
              AND "IO"."OBJ#"="I"."BO#" AND "IO"."TYPE#"=2) OR "O"."TYPE#"=2 AND  (SELECT 1 FROM "SYS"."TAB$"
              "T" WHERE "T"."OBJ#"=:B2 AND BITAND("T"."PROPERTY",36893488147419103232)=0)=1 OR "O"."TYPE#"=6
              AND  (SELECT 1 FROM "SYS"."SEQ$" "S" WHERE "S"."OBJ#"=:B3 AND (BITAND("S"."FLAGS",1024)=0 OR
              "S"."FLAGS" IS NULL))=1) AND ("O"."TYPE#"<>1 AND "O"."TYPE#"<>10 OR "O"."TYPE#"=1 AND  (SELECT 1
              FROM "SYS"."IND$" "I" WHERE "I"."OBJ#"=:B4 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#"=1 OR "O"."TYPE#"=2 OR
              "O"."TYPE#"=3 OR "O"."TYPE#"=4 OR "O"."TYPE#"=5 OR "O"."TYPE#"=6 OR "O"."TYPE#"=19 OR
              "O"."TYPE#"=20 OR "O"."TYPE#"=22 OR "O"."TYPE#"=23 OR "O"."TYPE#"=32 OR "O"."TYPE#"=33 OR
              "O"."TYPE#"=34 OR "O"."TYPE#"=35 OR "O"."TYPE#"=42 OR "O"."TYPE#"=44 OR "O"."TYPE#"=46 OR
              "O"."TYPE#"=48 OR "O"."TYPE#"=59 OR "O"."TYPE#"=62 OR "O"."TYPE#"=66 OR "O"."TYPE#"=67 OR

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
              "O"."TYPE#"=68 OR "O"."TYPE#"=79 OR "O"."TYPE#"=81 OR "O"."TYPE#"=82 OR "O"."TYPE#"=87 OR
              "O"."TYPE#"=92 OR "O"."TYPE#"=94 OR "O"."TYPE#"=95 OR "O"."TYPE#"=100) AND
              ORA_CHECK_SYS_PRIVILEGE("O"."SPARE3","O"."TYPE#")=1 OR ("O"."TYPE#"=57 OR "O"."TYPE#"=69 OR
              "O"."TYPE#"=72 OR "O"."TYPE#"=74 OR "O"."TYPE#"=101) OR ("O"."TYPE#"=150 OR "O"."TYPE#"=151 OR
              "O"."TYPE#"=152) AND ORA_CHECK_SYS_PRIVILEGE("O"."SPARE3","O"."TYPE#")=1 OR "O"."TYPE#"<>29 AND
              "O"."TYPE#"<>13 AND "O"."TYPE#"<>30 AND "O"."TYPE#"<>9 AND "O"."TYPE#"<>11 AND "O"."TYPE#"<>56
              AND "O"."TYPE#"<>8 AND "O"."TYPE#"<>14 AND "O"."TYPE#"<>7 AND "O"."TYPE#"<>12 AND
              "O"."TYPE#"<>28 AND "O"."TYPE#"<>93 AND  EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$"
              "OBJAUTH$","SYS"."X$KZSRO" "X$KZSRO" WHERE ("CON_ID"=0 OR "CON_ID"=3) AND "OBJ#"=:B5 AND
              "GRANTEE#"="KZSROROL" 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

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
              OR "PRIVILEGE#"=18)) OR "O"."TYPE#"=1 AND  EXISTS (SELECT 0 FROM "SYS"."IND$"
              "I","SYS"."OBJAUTH$" "OA","SYS"."X$KZSRO" "X$KZSRO" WHERE "OA"."GRANTEE#"="KZSROROL" AND
              ("CON_ID"=0 OR "CON_ID"=3) AND "OA"."OBJ#"="I"."BO#" AND "I"."OBJ#"=:B6) 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 (ORA_CHECK_SYS_PRIVILEGE("O"."SPARE3","O"."TYPE#")=1 OR  EXISTS (SELECT 0
              FROM "SYS"."OBJAUTH$" "OA","SYS"."X$KZSRO" "X$KZSRO" WHERE ("CON_ID"=0 OR "CON_ID"=3) AND
              "OA"."OBJ#"=:B7 AND "OA"."GRANTEE#"="KZSROROL" AND ("OA"."PRIVILEGE#"=12 OR
              "OA"."PRIVILEGE#"=26))) OR "O"."TYPE#"=13 AND (ORA_CHECK_SYS_PRIVILEGE("O"."SPARE3","O"."TYPE#")=
              1 OR  EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$" "OA","SYS"."X$KZSRO" "X$KZSRO" WHERE ("CON_ID"=0 OR
              "CON_ID"=3) AND "OA"."OBJ#"=:B8 AND "OA"."GRANTEE#"="KZSROROL" AND ("OA"."PRIVILEGE#"=12 OR
              "OA"."PRIVILEGE#"=26))) OR "O"."TYPE#"=19 AND ( EXISTS (SELECT 0 FROM "SYS"."TABPART$"

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
              "TABPART$","SYS"."OBJAUTH$" "OBJAUTH$","SYS"."X$KZSRO" "X$KZSRO" WHERE "GRANTEE#"="KZSROROL" AND
              ("CON_ID"=0 OR "CON_ID"=3) AND "BO#"="OBJ#" AND ("PRIVILEGE#"=9 OR "PRIVILEGE#"=17) AND
              "OBJ#"=:B9) OR  EXISTS (SELECT 0 FROM "SYS"."TABCOMPART$" "TABCOMPART$","SYS"."OBJAUTH$"
              "OBJAUTH$","SYS"."X$KZSRO" "X$KZSRO" WHERE "GRANTEE#"="KZSROROL" AND ("CON_ID"=0 OR "CON_ID"=3)
              AND "BO#"="OBJ#" AND ("PRIVILEGE#"=9 OR "PRIVILEGE#"=17) AND "OBJ#"=:B10)) OR "O"."TYPE#"=11 AND
              (ORA_CHECK_SYS_PRIVILEGE("O"."SPARE3","O"."TYPE#")=1 OR  EXISTS (SELECT 0 FROM "SYS"."OBJAUTH$"
              "OA","SYS"."DEPENDENCY$" "DEP","SYS"."USER$" "U","SYS"."OBJ$" "O","SYS"."X$KZSRO" "X$KZSRO"
              WHERE ("CON_ID"=0 OR "CON_ID"=3) AND "O"."NAME"=:B11 AND "O"."SPARE3"=:B12 AND "O"."TYPE#"=9 AND
              "O"."OWNE)
  10 - filter(NULL IS NOT NULL)
  11 - access("O"."SPARE3"="U"."USER#")

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
  13 - access("O"."OWNER#"="U"."USER#")
  15 - filter("O"."LINKNAME" IS NULL AND "O"."NAME"<>'_NEXT_OBJECT' AND
              "O"."NAME"<>'_default_auditing_options_' AND BITAND("O"."FLAGS",128)=0)
  19 - access("I"."OBJ#"=:B1)
  20 - filter("I"."BO#"="T"."OBJ#" AND BITAND("T"."PROPERTY",36893488147419103232)=36893488147419
              103232)
  21 - access("IO"."OBJ#"="I"."BO#" AND "IO"."TYPE#"=2)
       filter("IO"."TYPE#"=2)
  22 - filter(BITAND("T"."PROPERTY",36893488147419103232)=0)
  23 - access("T"."OBJ#"=:B1)
  24 - filter(BITAND("S"."FLAGS",1024)=0 OR "S"."FLAGS" IS NULL)

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
  25 - access("S"."OBJ#"=:B1)
  26 - 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)
  27 - access("I"."OBJ#"=:B1)
  29 - filter("CON_ID"=0 OR "CON_ID"=3)
  30 - access("OBJ#"=:B1 AND "GRANTEE#"="KZSROROL")
       filter("GRANTEE#"="KZSROROL" 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))
  31 - access("OA"."GRANTEE#"="KZSROROL")
  34 - access("I"."OBJ#"=:B1)

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
  35 - access("OA"."OBJ#"="I"."BO#")
  36 - filter("CON_ID"=0 OR "CON_ID"=3)
  38 - filter("CON_ID"=0 OR "CON_ID"=3)
  39 - access("OA"."OBJ#"=:B1 AND "OA"."GRANTEE#"="KZSROROL")
       filter("OA"."GRANTEE#"="KZSROROL" AND ("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26))
  41 - filter("CON_ID"=0 OR "CON_ID"=3)
  42 - access("OA"."OBJ#"=:B1 AND "OA"."GRANTEE#"="KZSROROL")
       filter("OA"."GRANTEE#"="KZSROROL" AND ("OA"."PRIVILEGE#"=12 OR "OA"."PRIVILEGE#"=26))
  43 - access("GRANTEE#"="KZSROROL")
  46 - access("OBJ#"=:B1)
  47 - access("BO#"="OBJ#")

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
       filter("PRIVILEGE#"=9 OR "PRIVILEGE#"=17)
  48 - filter("CON_ID"=0 OR "CON_ID"=3)
  49 - access("GRANTEE#"="KZSROROL")
  52 - access("OBJ#"=:B1)
  53 - access("BO#"="OBJ#")
       filter("PRIVILEGE#"=9 OR "PRIVILEGE#"=17)
  54 - filter("CON_ID"=0 OR "CON_ID"=3)
  60 - access("O"."SPARE3"=:B1 AND "O"."NAME"=:B2 AND "O"."TYPE#"=9)
       filter("O"."TYPE#"=9)
  62 - filter("CON_ID"=0 OR "CON_ID"=3)
  63 - access("O"."OWNER#"="U"."USER#")

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
  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#")
  72 - access("O"."SPARE3"=:B1 AND "O"."NAME"=:B2 AND "O"."TYPE#"=13)
       filter("O"."TYPE#"=13)
  74 - filter("CON_ID"=0 OR "CON_ID"=3)
  75 - access("O"."OWNER#"="U"."USER#")
  76 - access("OA"."OBJ#"="O"."OBJ#" AND "OA"."GRANTEE#"="KZSROROL" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26 AND "OA"."GRANTEE#"="KZSROROL")
  77 - access("DEP"."D_OBJ#"=:B1)

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
  78 - filter("DEP"."P_OBJ#"="O"."OBJ#")
  79 - access("OA"."GRANTEE#"="KZSROROL")
  81 - filter(BITAND("T"."PROPERTY",24)=0)
  82 - access("T"."OBJ#"=:B1)
  83 - access("OA"."OBJ#"="T"."BASEOBJECT" AND "OA"."PRIVILEGE#"=26)
       filter("OA"."PRIVILEGE#"=26)
  84 - filter("CON_ID"=0 OR "CON_ID"=3)
  85 - access("GRANTEE#"="KZSROROL")
  89 - access("SP"."OBJ#"=:B1)
  91 - access("SP"."POBJ#"="CP"."OBJ#")
  92 - access("CP"."BO#"="OBJ#")

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
       filter("PRIVILEGE#"=9 OR "PRIVILEGE#"=17)
  93 - filter("CON_ID"=0 OR "CON_ID"=3)
  97 - filter("CON_ID"=0 OR "CON_ID"=3)
  98 - access("OA"."OBJ#"=:B1 AND "OA"."GRANTEE#"="KZSROROL")
       filter("OA"."GRANTEE#"="KZSROROL" AND ("OA"."PRIVILEGE#"=0 OR "OA"."PRIVILEGE#"=29))
 100 - filter("CON_ID"=0 OR "CON_ID"=3)
 101 - access("GRANTEE#"="KZSROROL" AND "OBJ#"=:B1)
 105 - access("C"."OBJ#"=:B1)
 107 - access("D"."D_OBJ#"=:B1)
 108 - access("DO"."OBJ#"="D"."P_OBJ#" AND "DO"."TYPE#"=92)
       filter("DO"."TYPE#"=92)

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
 110 - filter("CON_ID"=0 OR "CON_ID"=3)
 111 - access("GRANTEE#"="KZSROROL" AND "OBJ#"=:B1)
 112 - filter("TYPE#"=:B1 AND "UE"."USER#"=:B2)
 113 - filter("UE"."TYPE#"=:B1 AND "UE"."USER#"=:B2)
 115 - access("U2"."TYPE#"=2 AND "U2"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_edition_i
              d')))
       filter("U2"."TYPE#"=2 AND "U2"."SPARE2"=TO_NUMBER(SYS_CONTEXT('userenv','current_edition_i
              d')))
 116 - access("O2"."DATAOBJ#"=:B1 AND "O2"."TYPE#"=88 AND "O2"."OWNER#"="U2"."USER#")

Note

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------
-----
   - this is an adaptive plan

266 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694430
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mit,

играем в телепатов? версию сервера предлагается угадать? собирали ли вы статистику по вновь созданной таблице - тоже? план запроса нам показывать необязательно?
это вам в передачу "экстрасенс" на ТНТ (не реклама), а не на технический форум...
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694455
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY, спасибо.
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694473
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все зависит от числа значений. Как только значений будет столько что optimizer решит что индекс дороже будет hash join и full scan.

SY.
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694508
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYВсе зависит от числа значений. Как только значений будет столько что optimizer решит что индекс дороже будет hash join и full scan.

Вот как раз и смущает, что в реальном случае в x возвращается одно значение, а план все равно строится c full scan.
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694510
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статистика по всем учавствующим таблицам собрана.
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694529
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mitв реальном случае в x возвращается одно значениеа оракл об этом откуда-то знает?
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694532
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

я так подозреваю, что должен знать на основе статистики. Нет?
...
Рейтинг: 0 / 0
Не подхватывается индекс в запросе с union или union all
    #39694538
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mit,
вы же нам точный текст запроса не показали, план его выполнения - тоже. как можно сказать - смог оракл догадаться о кол-ве строк, возвращаемых IN-подзапросом или нет?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не подхватывается индекс в запросе с union или union all
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]