powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Глюки оптимизатора 12с или мои ?
37 сообщений из 37, показаны все 2 страниц
Глюки оптимизатора 12с или мои ?
    #39292950
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В oracle 12.1.0.2.0 никто не сталкивался с тем,
что стоимость плана выполнения становилась
в 100.000 раз больше
чем в предыдущих версиях
при _всех_ равных условиях ?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39292952
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12c,

Почему бы и нет? Можете показать запрос и планы?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39292957
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функции в выражении есть?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39292965
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
SQL> l
  1     WITH DATA AS
  2          (SELECT DISTINCT t.ID, t.regnz_head regnz_t, t.lvl, z.stan, z.nsnz,
  3                           z.npoz, z.pl, NVL (v.vzav, v1.vespz) vzav, z.pnzt,
  4                           z.pr, t.regnz_from regnz, t.regnz regnz_p,
  5                           v.regnv_sv przv, zp.regnv_sv przz
  6                      FROM zadpr_tree_from t LEFT OUTER JOIN zadpr zp
  7                           ON t.regnz = zp.regnz
  8                           JOIN zadpr_v z ON t.regnz_from = z.regnz
  9                           LEFT OUTER JOIN pr_zakaz sv ON sv.regnv_sv =
 10                                                                      z.regnv_sv
 11                           LEFT OUTER JOIN zavka v
 12                           ON v.regnz = t.regnz_from
 13                              AND zp.regnv_sv = v.regnv_sv
 14                           LEFT OUTER JOIN potst v1
 15                           ON v1.nsnz = z.nsnz AND v1.npoz = z.npoz
 16                WHERE t.regnz_head = 151332 /*!!!!!!!*/)
 17     SELECT   ID, regnz_t, lvl, stan, nsnz, npoz, pl, vzav,
 18              CASE
 19                 WHEN regnz_p IS NULL
 20                    THEN 1
 21                 WHEN SUM (vzav) OVER (PARTITION BY regnz_p) = 0
 22                    THEN 1
 23                 ELSE ROUND (vzav / SUM (vzav) OVER (PARTITION BY regnz_p),
 24                             4
 25                            )
 26              END vol,
 27              SUM (vzav) OVER (PARTITION BY regnz_p) svzav, pnzt, pr, regnz,
 28              regnz_p, NULL, NULL
 29         FROM DATA
 30        WHERE NVL (NVL (przv, przz), 0) = NVL (NVL (przz, przv), 0)
 31*    ORDER BY ID
SQL> /

План выполнения
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=HINT: FIRST_ROWS (Cost=620026 Car
          d=5 Bytes=655)

   1    0   SORT (ORDER BY) (Cost=620026 Card=5 Bytes=655)
   2    1     WINDOW (SORT) (Cost=620026 Card=5 Bytes=655)
   3    2       VIEW (Cost=620024 Card=5 Bytes=655)
   4    3         HASH (UNIQUE) (Cost=620024 Card=5 Bytes=675)
   5    4           NESTED LOOPS (OUTER) (Cost=620023 Card=5 Bytes=675
          )

   6    5             HASH JOIN (Cost=620017 Card=5 Bytes=590)
   7    6               FILTER
   8    7                 NESTED LOOPS (OUTER) (Cost=6 Card=2 Bytes=86
          )

   9    8                   NESTED LOOPS (OUTER) (Cost=4 Card=2 Bytes=
          58)

  10    9                     TABLE ACCESS (BY INDEX ROWID BATCHED) OF
           'ZADPR_TREE_FROM' (TABLE) (Cost=2 Card=2 Bytes=42)

  11   10                       INDEX (RANGE SCAN) OF 'ZADPR_TREE_FROM
          _REGNZ_HEAD_IND' (INDEX) (Cost=1 Card=2)

  12    9                     TABLE ACCESS (BY INDEX ROWID) OF 'ZADPR'
           (TABLE) (Cost=1 Card=1 Bytes=8)

  13   12                       INDEX (UNIQUE SCAN) OF 'ZADPR_PK' (IND
          EX (UNIQUE)) (Cost=0 Card=1)

  14    8                   TABLE ACCESS (BY INDEX ROWID BATCHED) OF '
          ZAVKA' (TABLE) (Cost=2 Card=1 Bytes=14)

  15   14                     INDEX (RANGE SCAN) OF 'ZAVKA_REGNVSV_IND
          ' (INDEX) (Cost=1 Card=1)

  16    6               VIEW OF 'ZADPR_V' (VIEW) (Cost=620011 Card=165
          766 Bytes=12432450)

  17   16                 UNION-ALL
  18   17                   HASH JOIN (Cost=867 Card=19 Bytes=608)
  19   18                     NESTED LOOPS (Cost=867 Card=19 Bytes=608
          )

  20   19                       STATISTICS COLLECTOR
  21   20                         TABLE ACCESS (FULL) OF 'ZADPR' (TABL
          E) (Cost=616 Card=251 Bytes=6777)

  22   19                       INDEX (RANGE SCAN) OF 'NAZNASH_REGNZ_I
          ND' (INDEX) (Cost=1 Card=1 Bytes=5)

  23   18                     INDEX (FULL SCAN) OF 'NAZNASH_REGNZ_IND'
           (INDEX) (Cost=1 Card=1 Bytes=5)

  24   17                   NESTED LOOPS (Cost=619144 Card=165747 Byte
          s=25027797)

  25   24                     NESTED LOOPS (Cost=619144 Card=165747 By
          tes=25027797)

  26   25                       NESTED LOOPS (OUTER) (Cost=453358 Card
          =165747 Bytes=23536074)

  27   26                         VIEW OF 'VW_JF_SET$2DC9CC60' (VIEW)
          (Cost=288075 Card=165747 Bytes=20055387)

  28   27                           UNION-ALL
  29   28                             HASH JOIN (Cost=205226 Card=1022
          78 Bytes=7364016)

  30   29                               NESTED LOOPS (Cost=205226 Card
          =102278 Bytes=7364016)

  31   30                                 NESTED LOOPS (Cost=205226 Ca
          rd=102278 Bytes=7364016)

  32   31                                   STATISTICS COLLECTOR
  33   32                                     NESTED LOOPS (Cost=10292
          3 Card=102278 Bytes=6136680)

  34   33                                       NESTED LOOPS (OUTER) (
          Cost=621 Card=102278 Bytes=4704788)

  35   34                                         TABLE ACCESS (FULL)
          OF 'ZADPR' (TABLE) (Cost=617 Card=102278 Bytes=3170618)

  36   34                                         INDEX (UNIQUE SCAN)
          OF 'ZAKR_ZAK_UK' (INDEX (UNIQUE)) (Cost=0 Card=1 Bytes=15)

  37   33                                       INDEX (UNIQUE SCAN) OF
           'POZIC_N' (INDEX (UNIQUE)) (Cost=1 Card=1 Bytes=14)

  38   31                                   INDEX (UNIQUE SCAN) OF 'SH
          APKA_N' (INDEX (UNIQUE)) (Cost=0 Card=1)

  39   30                                 TABLE ACCESS (BY INDEX ROWID
          ) OF 'SHAPKA' (TABLE) (Cost=1 Card=1 Bytes=12)

  40   29                               TABLE ACCESS (FULL) OF 'SHAPKA
          ' (TABLE) (Cost=1 Card=1 Bytes=12)

  41   28                             NESTED LOOPS (Cost=82849 Card=63
          469 Bytes=3363857)

  42   41                               NESTED LOOPS (Cost=82849 Card=
          63469 Bytes=3363857)

  43   42                                 TABLE ACCESS (BY INDEX ROWID
           BATCHED) OF 'ZADPR' (TABLE) (Cost=19366 Card=63469 Bytes=21
          57946)

  44   43                                   INDEX (FULL SCAN) OF 'ZADP
          R_REGNVSV_IND' (INDEX) (Cost=147 Card=65369)

  45   42                                 INDEX (UNIQUE SCAN) OF 'PR_Z
          AKAZ_PK' (INDEX (UNIQUE)) (Cost=0 Card=1)

  46   41                               TABLE ACCESS (BY INDEX ROWID)
          OF 'PR_ZAKAZ' (TABLE) (Cost=1 Card=1 Bytes=19)

  47   26                         INDEX (UNIQUE SCAN) OF 'RAPORT_ZAK_V
          ES_PK' (INDEX (UNIQUE)) (Cost=1 Card=1 Bytes=21)

  48   25                       INDEX (UNIQUE SCAN) OF 'ZADPR_DETAIL_P
          K' (INDEX (UNIQUE)) (Cost=0 Card=1)

  49   24                     TABLE ACCESS (BY INDEX ROWID) OF 'ZADPR_
          DETAIL' (TABLE) (Cost=1 Card=1 Bytes=9)

  50    5             TABLE ACCESS (BY INDEX ROWID BATCHED) OF 'POTST'
           (TABLE) (Cost=2 Card=1 Bytes=17)

  51   50               INDEX (RANGE SCAN) OF 'POTST_ZAK' (INDEX) (Cos
          t=1 Card=1)

Тот же запрос в старой версии:

План выполнения
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=HINT: FIRST_ROWS (Cost=17 Card=1
          Bytes=166)

   1    0   SORT (ORDER BY) (Cost=17 Card=1 Bytes=166)
   2    1     WINDOW (SORT) (Cost=17 Card=1 Bytes=166)
   3    2       VIEW (Cost=12 Card=1 Bytes=166)
   4    3         SORT (UNIQUE) (Cost=12 Card=1 Bytes=126)
   5    4           FILTER
   6    5             NESTED LOOPS (OUTER)
   7    6               NESTED LOOPS (OUTER) (Cost=7 Card=1 Bytes=112)
   8    7                 VIEW (Cost=5 Card=1 Bytes=95)
   9    8                   NESTED LOOPS (OUTER) (Cost=5 Card=1 Bytes=
          103)

  10    9                     NESTED LOOPS (OUTER) (Cost=4 Card=1 Byte
          s=95)

  11   10                       NESTED LOOPS (Cost=4 Card=1 Bytes=90)
  12   11                         TABLE ACCESS (BY INDEX ROWID) OF 'ZA
          DPR_TREE_FROM' (Cost=2 Card=2 Bytes=40)

  13   12                           INDEX (RANGE SCAN) OF 'ZADPR_TREE_
          FROM_REGNZ_HEAD_IND' (NON-UNIQUE) (Cost=1 Card=2)

  14   11                         VIEW OF 'ZADPR_V' (Cost=1 Card=1 Byt
          es=70)

  15   14                           UNION-ALL (PARTITION)
  16   15                             NESTED LOOPS (Cost=4 Card=1 Byte
          s=105)

  17   16                               NESTED LOOPS (Cost=4 Card=1 By
          tes=91)

  18   17                                 NESTED LOOPS (OUTER) (Cost=3
           Card=1 Bytes=82)

  19   18                                   NESTED LOOPS (OUTER) (Cost
          =3 Card=1 Bytes=61)

  20   19                                     NESTED LOOPS (Cost=3 Car
          d=1 Bytes=46)

  21   20                                       TABLE ACCESS (BY INDEX
           ROWID) OF 'ZADPR' (Cost=2 Card=1 Bytes=34)

  22   21                                         INDEX (UNIQUE SCAN)
          OF 'ZADPR_PK' (UNIQUE) (Cost=1 Card=1)

  23   20                                       TABLE ACCESS (BY INDEX
           ROWID) OF 'SHAPKA' (Cost=1 Card=1 Bytes=12)

  24   23                                         INDEX (UNIQUE SCAN)
          OF 'SHAPKA_N' (UNIQUE)

  25   19                                     INDEX (UNIQUE SCAN) OF '
          ZAKR_ZAK_UK' (UNIQUE)

  26   18                                   INDEX (UNIQUE SCAN) OF 'RA
          PORT_ZAK_VES_PK' (UNIQUE)

  27   17                                 TABLE ACCESS (BY INDEX ROWID
          ) OF 'ZADPR_DETAIL' (Cost=1 Card=1 Bytes=9)

  28   27                                   INDEX (UNIQUE SCAN) OF 'ZA
          DPR_DETAIL_PK' (UNIQUE)

  29   16                               INDEX (UNIQUE SCAN) OF 'POZIC_
          N' (UNIQUE)

  30   15                             NESTED LOOPS (OUTER) (Cost=4 Car
          d=1 Bytes=91)

  31   30                               NESTED LOOPS (Cost=4 Card=1 By
          tes=86)

  32   31                                 NESTED LOOPS (Cost=3 Card=1
          Bytes=64)

  33   32                                   NESTED LOOPS (OUTER) (Cost
          =2 Card=1 Bytes=55)

  34   33                                     TABLE ACCESS (BY INDEX R
          OWID) OF 'ZADPR' (Cost=2 Card=1 Bytes=34)

  35   34                                       INDEX (UNIQUE SCAN) OF
           'ZADPR_PK' (UNIQUE) (Cost=1 Card=1)

  36   33                                     INDEX (UNIQUE SCAN) OF '
          RAPORT_ZAK_VES_PK' (UNIQUE)

  37   32                                   TABLE ACCESS (BY INDEX ROW
          ID) OF 'ZADPR_DETAIL' (Cost=1 Card=1 Bytes=9)

  38   37                                     INDEX (UNIQUE SCAN) OF '
          ZADPR_DETAIL_PK' (UNIQUE)

  39   31                                 TABLE ACCESS (BY INDEX ROWID
          ) OF 'PR_ZAKAZ' (Cost=1 Card=1 Bytes=22)

  40   39                                   INDEX (UNIQUE SCAN) OF 'PR
          _ZAKAZ_PK' (UNIQUE)

  41   30                               INDEX (UNIQUE SCAN) OF 'POTSH_
          PNZ' (UNIQUE)

  42   15                             NESTED LOOPS (Cost=3 Card=2 Byte
          s=70)

  43   42                               TABLE ACCESS (BY INDEX ROWID)
          OF 'ZADPR' (Cost=2 Card=1 Bytes=30)

  44   43                                 INDEX (UNIQUE SCAN) OF 'ZADP
          R_PK' (UNIQUE) (Cost=1 Card=1)

  45   42                               INDEX (RANGE SCAN) OF 'NAZNASH
          _REGNZ_IND' (NON-UNIQUE) (Cost=1 Card=2 Bytes=10)

  46   10                       INDEX (UNIQUE SCAN) OF 'PR_ZAKAZ_PK' (
          UNIQUE)

  47    9                     TABLE ACCESS (BY INDEX ROWID) OF 'ZADPR'
           (Cost=1 Card=1 Bytes=8)

  48   47                       INDEX (UNIQUE SCAN) OF 'ZADPR_PK' (UNI
          QUE)

  49    7                 TABLE ACCESS (BY INDEX ROWID) OF 'POTST' (Co
          st=2 Card=1 Bytes=17)

  50   49                   INDEX (RANGE SCAN) OF 'POTST_ZAK' (NON-UNI
          QUE) (Cost=1 Card=1)

  51    6               TABLE ACCESS (BY INDEX ROWID) OF 'ZAVKA' (Cost
          =2 Card=1 Bytes=14)

  52   51                 INDEX (RANGE SCAN) OF 'ZAVKA_REGNVSV_IND' (N
          ON-UNIQUE) (Cost=1 Card=1)
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39292982
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12c,

А статистика вся собрана? При первом беглом взгляде бросается в глаза разница в оценке Bytes. Еще бы хорошо посмотреть Projection планов.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39292983
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12c,

И еще - постарайтесь форматировать планы, глаза же сломаешь.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39292987
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12cчто стоимость плана выполнения становилась
в 100.000 раз больше
Одного единственного или всех рассмотренных?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39292990
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В частности - что с таблицей ZADPR ?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293049
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцов,

уточните, пожалуйста, что имеется в виду,
что, как надо сделать ?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293051
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
SQL> select LAST_ANALYZED from dba_tables where table_name='ZADPR';

LAST_ANALY
----------
11.08.2016



Можно/нужно где-то в другом месте, как-то по другому смотреть ?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293056
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В sqlplus пишу:

set autotrace traceonly explain

Как можно/нужно отформатировать?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293061
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12cКак можно/нужно отформатировать?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
-- Defaults for SET AUTOTRACE EXPLAIN report
column id_plus_exp format 990 heading i
column parent_id_plus_exp format 990 heading p
column plan_plus_exp format a100
column object_node_plus_exp format a8
column other_tag_plus_exp format a29
column other_plus_exp format a44

...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293083
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас оптимизатор настроен на возврат первых строк, а не всех.
В новой версии соединение идёт по узлам BY INDEX ROWID BATCHED - эта фишка проседает при ожидании "первого нужного", т.к. вычитывает rowid пачками (приходящимися на 1 блок) и пока дойдёт до нужного - косты растут, но для плана по всем строкам она работает быстрее.

Сравните планы для ALL_ROWS
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293138
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FogelУ вас оптимизатор настроен на возврат первых строк, а не всех.
В новой версии соединение идёт по узлам BY INDEX ROWID BATCHED - эта фишка проседает при ожидании "первого нужного", т.к. вычитывает rowid пачками (приходящимися на 1 блок) и пока дойдёт до нужного - косты растут, но для плана по всем строкам она работает быстрее.

Сравните планы для ALL_ROWS

Лучше, но не решает проблему

Код: 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.
План выполнения
----------------------------------------------------------
   0
SELECT STATEMENT Optimizer=ALL_ROWS (Cost=7644 Card=5 Bytes=655)


   1    0
  SORT (ORDER BY) (Cost=7644 Card=5 Bytes=655)


   2    1
    WINDOW (SORT) (Cost=7644 Card=5 Bytes=655)


   3    2
      VIEW (Cost=7642 Card=5 Bytes=655)


   4    3
        HASH (UNIQUE) (Cost=7642 Card=5 Bytes=675)


   5    4
          NESTED LOOPS (OUTER) (Cost=7641 Card=5 Bytes=675)


   6    5
            HASH JOIN (Cost=7635 Card=5 Bytes=590)


   7    6
              FILTER


   8    7
                NESTED LOOPS (OUTER) (Cost=6 Card=2 Bytes=86)


   9    8
                  NESTED LOOPS (OUTER) (Cost=4 Card=2 Bytes=58)


  10    9
                    TABLE ACCESS (BY INDEX ROWID BATCHED) OF 'ZADPR_TREE_FROM' (
TABLE) (Cost=2 Card=2 Bytes=42)


  11   10
                      INDEX (RANGE SCAN) OF 'ZADPR_TREE_FROM_REGNZ_HEAD_IND' (IN
DEX) (Cost=1 Card=2)


  12    9
                    TABLE ACCESS (BY INDEX ROWID) OF 'ZADPR' (TABLE) (Cost=1 Car
d=1 Bytes=8)


  13   12
                      INDEX (UNIQUE SCAN) OF 'ZADPR_PK' (INDEX (UNIQUE)) (Cost=0
 Card=1)


  14    8
                  TABLE ACCESS (BY INDEX ROWID BATCHED) OF 'ZAVKA' (TABLE) (Cost
=2 Card=1 Bytes=14)


  15   14
                    INDEX (RANGE SCAN) OF 'ZAVKA_REGNVSV_IND' (INDEX) (Cost=1 Ca
rd=1)


  16    6
              VIEW OF 'ZADPR_V' (VIEW) (Cost=7628 Card=165766 Bytes=12432450)


  17   16
                UNION-ALL


  18   17
                  HASH JOIN (Cost=716 Card=19 Bytes=608)


  19   18
                    NESTED LOOPS (Cost=716 Card=19 Bytes=608)


  20   19
                      STATISTICS COLLECTOR


  21   20
                        TABLE ACCESS (FULL) OF 'ZADPR' (TABLE) (Cost=616 Card=25
1 Bytes=6777)


  22   19
                      INDEX (RANGE SCAN) OF 'NAZNASH_REGNZ_IND' (INDEX) (Cost=10
0 Card=1 Bytes=5)


  23   18
                    INDEX (FAST FULL SCAN) OF 'NAZNASH_REGNZ_IND' (INDEX) (Cost=
100 Card=161686 Bytes=808430)


  24   17
                  HASH JOIN (Cost=6912 Card=165747 Bytes=13922748)


  25   24
                    TABLE ACCESS (FULL) OF 'ZADPR_DETAIL' (TABLE) (Cost=547 Card
=168028 Bytes=1512252)


  26   24
                    VIEW OF 'VW_JF_SET$5356E05C' (VIEW) (Cost=5514 Card=165747 B
ytes=12431025)


  27   26
                      UNION-ALL


  28   27
                        NESTED LOOPS (OUTER) (Cost=3824 Card=102278 Bytes=951185
4)


  29   28
                          HASH JOIN (RIGHT OUTER) (Cost=3819 Card=102278 Bytes=7
977684)


  30   29
                            INDEX (FAST FULL SCAN) OF 'RAPORT_ZAK_VES_PK' (INDEX
 (UNIQUE)) (Cost=222 Card=193512 Bytes=4063752)


  31   29
                            HASH JOIN (Cost=2960 Card=102278 Bytes=5829846)


  32   31
                              NESTED LOOPS (Cost=2960 Card=102278 Bytes=5829846)


  33   32
                                STATISTICS COLLECTOR


  34   33
                                  HASH JOIN (Cost=1635 Card=102278 Bytes=4397954
)


  35   34
                                    TABLE ACCESS (FULL) OF 'SHAPKA' (TABLE) (Cos
t=652 Card=137426 Bytes=1649112)


  36   34
                                    TABLE ACCESS (FULL) OF 'ZADPR' (TABLE) (Cost
=617 Card=102278 Bytes=3170618)


  37   32
                                INDEX (UNIQUE SCAN) OF 'POZIC_N' (INDEX (UNIQUE)
) (Cost=436 Card=1 Bytes=14)


  38   31
                              INDEX (FAST FULL SCAN) OF 'POZIC_N' (INDEX (UNIQUE
)) (Cost=436 Card=504144 Bytes=7058016)


  39   28
                          INDEX (UNIQUE SCAN) OF 'ZAKR_ZAK_UK' (INDEX (UNIQUE))
(Cost=0 Card=1 Bytes=15)


  40   27
                        HASH JOIN (Cost=1691 Card=63469 Bytes=4696706)


  41   40
                          TABLE ACCESS (FULL) OF 'PR_ZAKAZ' (TABLE) (Cost=410 Ca
rd=67128 Bytes=1275432)


  42   40
                          HASH JOIN (OUTER) (Cost=1281 Card=63469 Bytes=3490795)


  43   42
                            NESTED LOOPS (OUTER) (Cost=1281 Card=63469 Bytes=349
0795)


  44   43
                              STATISTICS COLLECTOR


  45   44
                                TABLE ACCESS (FULL) OF 'ZADPR' (TABLE) (Cost=617
 Card=63469 Bytes=2157946)


  46   43
                              INDEX (UNIQUE SCAN) OF 'RAPORT_ZAK_VES_PK' (INDEX
(UNIQUE)) (Cost=222 Card=1 Bytes=21)


  47   42
                            INDEX (FAST FULL SCAN) OF 'RAPORT_ZAK_VES_PK' (INDEX
 (UNIQUE)) (Cost=222 Card=193512 Bytes=4063752)


  48    5
            TABLE ACCESS (BY INDEX ROWID BATCHED) OF 'POTST' (TABLE) (Cost=2 Car
d=1 Bytes=17)


  49   48
              INDEX (RANGE SCAN) OF 'POTST_ZAK' (INDEX) (Cost=1 Card=1)
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293154
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выполнение
SYS.DBMS_STATS.GATHER_DATABASE_STATS
тоже не помогает
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293165
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньевoracle12cчто стоимость плана выполнения становилась
в 100.000 раз больше
Одного единственного или всех рассмотренных?

Это первый опробованный запрос в новой версии,
он же пока и единственный опробованный...
Какой смысл пробовать другие, если/пока с этим проблеме не решится?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293179
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверьте валидность задействованных индексов (если есть локальные и на какой либо партиции отвалились, то подобное поведение может быть независимо от версии).
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293180
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12cСергей Арсеньевпропущено...

Одного единственного или всех рассмотренных?

Это первый опробованный запрос в новой версии,
он же пока и единственный опробованный...
Какой смысл пробовать другие, если/пока с этим проблеме не решится?Тогда лучше ничего не трогайте.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293187
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FogelПроверьте валидность задействованных индексов (если есть локальные и на какой либо партиции отвалились, то подобное поведение может быть независимо от версии).
соврал, с 11.2
в версиях ниже частично разрушенные индексы не использовались бы полностью - шёл бы full scan.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293219
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Павел Воронцов

Тогда лучше ничего не трогайте.[/quot]

Надо на новую версию переходить, однако...

Может быть, это поможет:

Код: 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.
SQL> set line 200
SQL> set pagesize 0
SQL> set trimspool on
SQL>
SQL> explain plan for
  2     WITH DATA AS
  3          (SELECT DISTINCT t.ID, t.regnz_head regnz_t, t.lvl, z.stan, z.nsnz,
  4                           z.npoz, z.pl, NVL (v.vzav, v1.vespz) vzav, z.pnzt,
  5                           z.pr, t.regnz_from regnz, t.regnz regnz_p,
  6                           v.regnv_sv przv, zp.regnv_sv przz
  7                      FROM zadpr_tree_from t LEFT OUTER JOIN zadpr zp
  8                           ON t.regnz = zp.regnz
  9                           JOIN zadpr_v z ON t.regnz_from = z.regnz
 10                           LEFT OUTER JOIN pr_zakaz sv ON sv.regnv_sv =
 11                                                                      z.regnv_sv
 12                           LEFT OUTER JOIN zavka v
 13                           ON v.regnz = t.regnz_from
 14                              AND zp.regnv_sv = v.regnv_sv
 15                           LEFT OUTER JOIN potst v1
 16                           ON v1.nsnz = z.nsnz AND v1.npoz = z.npoz
 17                     WHERE t.regnz_head = 151332 /*!!!!!!!*/)
 18     SELECT   ID, regnz_t, lvl, stan, nsnz, npoz, pl, vzav,
 19              CASE
 20                 WHEN regnz_p IS NULL
 21                    THEN 1
 22                 WHEN SUM (vzav) OVER (PARTITION BY regnz_p) = 0
 23                    THEN 1
 24                 ELSE ROUND (vzav / SUM (vzav) OVER (PARTITION BY regnz_p),
 25                             4
 26                            )
 27              END vol,
 28              SUM (vzav) OVER (PARTITION BY regnz_p) svzav, pnzt, pr, regnz,
 29              regnz_p, NULL, NULL
 30         FROM DATA
 31        WHERE NVL (NVL (przv, przz), 0) = NVL (NVL (przz, przv), 0)
 32     ORDER BY ID
 33  /

Объяснено.

SQL>
SQL> rem SELECT * FROM TABLE(dbms_xplan.display(NULL,NULL,'basic'));
SQL> SELECT * FROM TABLE(dbms_xplan.display(NULL,NULL,'all'));
Plan hash value: 2032817558

---------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                    | Name                           | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                             |                                |     5 |   655 |       |  7644   (1)| 00:00:01 |
|   1 |  SORT ORDER BY                               |                                |     5 |   655 |       |  7644   (1)| 00:00:01 |
|   2 |   WINDOW SORT                                |                                |     5 |   655 |       |  7644   (1)| 00:00:01 |
|   3 |    VIEW                                      |                                |     5 |   655 |       |  7642   (1)| 00:00:01 |
|   4 |     HASH UNIQUE                              |                                |     5 |   675 |       |  7642   (1)| 00:00:01 |
|   5 |      NESTED LOOPS OUTER                      |                                |     5 |   675 |       |  7641   (1)| 00:00:01 |
|*  6 |       HASH JOIN                              |                                |     5 |   590 |       |  7635   (1)| 00:00:01 |
|*  7 |        FILTER                                |                                |       |       |       |            |          |
|   8 |         NESTED LOOPS OUTER                   |                                |     2 |    86 |       |     6   (0)| 00:00:01 |
|   9 |          NESTED LOOPS OUTER                  |                                |     2 |    58 |       |     4   (0)| 00:00:01 |
|  10 |           TABLE ACCESS BY INDEX ROWID BATCHED| ZADPR_TREE_FROM                |     2 |    42 |       |     2   (0)| 00:00:01 |
|* 11 |            INDEX RANGE SCAN                  | ZADPR_TREE_FROM_REGNZ_HEAD_IND |     2 |       |       |     1   (0)| 00:00:01 |
|  12 |           TABLE ACCESS BY INDEX ROWID        | ZADPR                          |     1 |     8 |       |     1   (0)| 00:00:01 |
|* 13 |            INDEX UNIQUE SCAN                 | ZADPR_PK                       |     1 |       |       |     0   (0)| 00:00:01 |
|* 14 |          TABLE ACCESS BY INDEX ROWID BATCHED | ZAVKA                          |     1 |    14 |       |     2   (0)| 00:00:01 |
|* 15 |           INDEX RANGE SCAN                   | ZAVKA_REGNVSV_IND              |     1 |       |       |     1   (0)| 00:00:01 |
|  16 |        VIEW                                  | ZADPR_V                        |   165K|    11M|       |  7628   (1)| 00:00:01 |
|  17 |         UNION-ALL                            |                                |       |       |       |            |          |
|* 18 |          HASH JOIN                           |                                |    19 |   608 |       |   716   (1)| 00:00:01 |
|* 19 |           TABLE ACCESS FULL                  | ZADPR                          |   251 |  6777 |       |   616   (1)| 00:00:01 |
|  20 |           INDEX FAST FULL SCAN               | NAZNASH_REGNZ_IND              |   161K|   789K|       |   100   (1)| 00:00:01 |
|* 21 |          HASH JOIN                           |                                |   165K|    13M|  3448K|  6912   (1)| 00:00:01 |
|  22 |           TABLE ACCESS FULL                  | ZADPR_DETAIL                   |   168K|  1476K|       |   547   (1)| 00:00:01 |
|  23 |           VIEW                               | VW_JF_SET$5356E05C             |   165K|    11M|       |  5514   (1)| 00:00:01 |
|  24 |            UNION-ALL                         |                                |       |       |       |            |          |
|  25 |             NESTED LOOPS OUTER               |                                |   102K|  9288K|       |  3824   (1)| 00:00:01 |
|* 26 |              HASH JOIN RIGHT OUTER           |                                |   102K|  7790K|  6240K|  3819   (1)| 00:00:01 |
|  27 |               INDEX FAST FULL SCAN           | RAPORT_ZAK_VES_PK              |   193K|  3968K|       |   222   (1)| 00:00:01 |
|* 28 |               HASH JOIN                      |                                |   102K|  5693K|  5496K|  2960   (1)| 00:00:01 |
|* 29 |                HASH JOIN                     |                                |   102K|  4294K|  3224K|  1635   (1)| 00:00:01 |
|  30 |                 TABLE ACCESS FULL            | SHAPKA                         |   137K|  1610K|       |   652   (1)| 00:00:01 |
|* 31 |                 TABLE ACCESS FULL            | ZADPR                          |   102K|  3096K|       |   617   (1)| 00:00:01 |
|  32 |                INDEX FAST FULL SCAN          | POZIC_N                        |   504K|  6892K|       |   436   (1)| 00:00:01 |
|* 33 |              INDEX UNIQUE SCAN               | ZAKR_ZAK_UK                    |     1 |    15 |       |     0   (0)| 00:00:01 |
|* 34 |             HASH JOIN                        |                                | 63469 |  4586K|       |  1691   (1)| 00:00:01 |
|  35 |              TABLE ACCESS FULL               | PR_ZAKAZ                       | 67128 |  1245K|       |   410   (1)| 00:00:01 |
|* 36 |              HASH JOIN OUTER                 |                                | 63469 |  3408K|  2856K|  1281   (1)| 00:00:01 |
|* 37 |               TABLE ACCESS FULL              | ZADPR                          | 63469 |  2107K|       |   617   (1)| 00:00:01 |
|  38 |               INDEX FAST FULL SCAN           | RAPORT_ZAK_VES_PK              |   193K|  3968K|       |   222   (1)| 00:00:01 |
|  39 |       TABLE ACCESS BY INDEX ROWID BATCHED    | POTST                          |     1 |    17 |       |     2   (0)| 00:00:01 |
|* 40 |        INDEX RANGE SCAN                      | POTST_ZAK                      |     1 |       |       |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$10
   3 - SEL$6C2100D6 / DATA@SEL$10
   4 - SEL$6C2100D6
  10 - SEL$6C2100D6 / T@SEL$1
  11 - SEL$6C2100D6 / T@SEL$1
  12 - SEL$6C2100D6 / ZP@SEL$1
  13 - SEL$6C2100D6 / ZP@SEL$1
  14 - SEL$6C2100D6 / V@SEL$7
  15 - SEL$6C2100D6 / V@SEL$7
  16 - SET$C9C8A705 / Z@SEL$2
  17 - SET$C9C8A705
  18 - SEL$5
  19 - SEL$5        / Z@SEL$5
  20 - SEL$5        / N@SEL$5
  21 - SEL$592F7F55
  22 - SEL$592F7F55 / ZD@SEL$3
  23 - SET$5356E05C / VW_JF_SET$5356E05C@SEL$1AC9F164
  24 - SET$5356E05C
  25 - SEL$0101FBD4
  27 - SEL$0101FBD4 / R@SEL$3
  30 - SEL$0101FBD4 / ZTSH@SEL$3
  31 - SEL$0101FBD4 / Z@SEL$3
  32 - SEL$0101FBD4 / ZT@SEL$3
  33 - SEL$0101FBD4 / ZZ@SEL$3
  34 - SEL$DDED8540
  35 - SEL$DDED8540 / ZP@SEL$4
  37 - SEL$DDED8540 / Z@SEL$4
  38 - SEL$DDED8540 / R@SEL$4
  39 - SEL$6C2100D6 / V1@SEL$8
  40 - SEL$6C2100D6 / V1@SEL$8

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

   6 - access("T"."REGNZ_FROM"="Z"."REGNZ")
   7 - filter(NVL(NVL("V"."REGNV_SV","ZP"."REGNV_SV"),0)=NVL(NVL("ZP"."REGNV_SV","V"."REGNV_SV"),0))
  11 - access("T"."REGNZ_HEAD"=151332)
  13 - access("T"."REGNZ"="ZP"."REGNZ"(+))
  14 - filter("V"."REGNZ"(+)="T"."REGNZ_FROM" AND "V"."REGNZ"(+) IS NOT NULL)
  15 - access("ZP"."REGNV_SV"="V"."REGNV_SV"(+))
  18 - access("Z"."REGNZ"="N"."REGNZ")
  19 - filter("Z"."PR"=0)
  21 - access("ITEM_1"="ZD"."REGNZ")
  26 - access("Z"."STAN"="R"."STAN"(+) AND "Z"."GDIS"="R"."GDIS"(+) AND "Z"."NPOZ"="R"."NPOZ"(+) AND "Z"."NSNZ"="R"."NSNZ"(+))
  28 - access("Z"."NPOZ"="ZT"."NPOZ" AND "Z"."NSNZ"="ZT"."NSNZ")
  29 - access("Z"."NSNZ"="ZTSH"."NSNZ")
  31 - filter("Z"."PR"=1)
  33 - access("Z"."NSNZ"="ZZ"."NSNZ"(+) AND "Z"."NPOZ"="ZZ"."NPOZ"(+))
  34 - access("Z"."REGNV_SV"="ZP"."REGNV_SV")
  36 - access("Z"."STAN"="R"."STAN"(+) AND "Z"."GDIS"="R"."GDIS"(+) AND "Z"."NPOZ"="R"."NPOZ"(+) AND "Z"."NSNZ"="R"."NSNZ"(+))
  37 - filter("Z"."REGNV_SV" IS NOT NULL AND "Z"."PR"=2)
  40 - access("V1"."NSNZ"(+)="Z"."NSNZ" AND "V1"."NPOZ"(+)="Z"."NPOZ")

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - (#keys=1) "ID"[NUMBER,22], NULL[0], "REGNZ_T"[NUMBER,22], "LVL"[NUMBER,22], "STAN"[NUMBER,22], "NSNZ"[VARCHAR2,10],
       "NPOZ"[NUMBER,22], "PL"[NUMBER,22], "VZAV"[NUMBER,22], CASE  WHEN "REGNZ_P" IS NULL THEN 1 WHEN SUM("VZAV") OVER ( PARTITION
       BY "REGNZ_P")=0 THEN 1 ELSE ROUND("VZAV"/SUM("VZAV") OVER ( PARTITION BY "REGNZ_P"),4) END [22], SUM("VZAV") OVER ( PARTITION
       BY "REGNZ_P")[22], "PNZT"[NUMBER,22], "PR"[NUMBER,2], "REGNZ"[NUMBER,22], "REGNZ_P"[NUMBER,22], NULL[0]
   2 - (#keys=1) "REGNZ_P"[NUMBER,22], "ID"[NUMBER,22], "REGNZ_T"[NUMBER,22], "LVL"[NUMBER,22], "STAN"[NUMBER,22],
       "NSNZ"[VARCHAR2,10], "NPOZ"[NUMBER,22], "PL"[NUMBER,22], "VZAV"[NUMBER,22], "PNZT"[NUMBER,22], "PR"[NUMBER,2],
       "REGNZ"[NUMBER,22], SUM("VZAV") OVER ( PARTITION BY "REGNZ_P")[22]
   3 - "ID"[NUMBER,22], "REGNZ_T"[NUMBER,22], "LVL"[NUMBER,22], "STAN"[NUMBER,22], "NSNZ"[VARCHAR2,10], "NPOZ"[NUMBER,22],
       "PL"[NUMBER,22], "VZAV"[NUMBER,22], "PNZT"[NUMBER,22], "PR"[NUMBER,2], "REGNZ"[NUMBER,22], "REGNZ_P"[NUMBER,22]
   4 - (#keys=14) "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."LVL"[NUMBER,22], "Z"."STAN"[NUMBER,22],
       "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22], "Z"."PL"[NUMBER,22], NVL("V"."VZAV","V1"."VESPZ")[22], "Z"."PNZT"[NUMBER,22],
       "Z"."PR"[NUMBER,2], "T"."REGNZ_FROM"[NUMBER,22], "T"."REGNZ"[NUMBER,22], "V"."REGNV_SV"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22]
   5 - (#keys=0) "T"."REGNZ_FROM"[NUMBER,22], "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22],
       "V"."REGNV_SV"[NUMBER,22], "T"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22], "V"."VZAV"[NUMBER,22], "Z"."PNZT"[NUMBER,22],
       "Z"."PR"[NUMBER,2], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22], "Z"."PL"[NUMBER,22],
       "V1"."VESPZ"[NUMBER,22]
   6 - (#keys=1) "T"."REGNZ_FROM"[NUMBER,22], "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22],
       "V"."REGNV_SV"[NUMBER,22], "T"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22], "V"."VZAV"[NUMBER,22], "Z"."PNZT"[NUMBER,22],
       "Z"."PR"[NUMBER,2], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22], "Z"."PL"[NUMBER,22]
   7 - "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22], "T"."REGNZ_FROM"[NUMBER,22],
       "T"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22], "V"."VZAV"[NUMBER,22], "V"."REGNV_SV"[NUMBER,22]
   8 - (#keys=0) "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22], "T"."REGNZ_FROM"[NUMBER,22],
       "T"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22], "V"."VZAV"[NUMBER,22], "V"."REGNV_SV"[NUMBER,22]
   9 - (#keys=0) "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22], "T"."REGNZ_FROM"[NUMBER,22],
       "T"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22]
  10 - "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22], "T"."REGNZ_FROM"[NUMBER,22],
       "T"."LVL"[NUMBER,22]
  11 - "T".ROWID[ROWID,10], "T"."REGNZ_HEAD"[NUMBER,22]
  12 - "ZP"."REGNV_SV"[NUMBER,22]
  13 - "ZP".ROWID[ROWID,10]
  14 - "V"."VZAV"[NUMBER,22], "V"."REGNV_SV"[NUMBER,22]
  15 - "V".ROWID[ROWID,10], "V"."REGNV_SV"[NUMBER,22]
  16 - "Z"."REGNZ"[NUMBER,22], "Z"."PR"[NUMBER,2], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22],
       "Z"."PL"[NUMBER,22], "Z"."PNZT"[NUMBER,22]
  17 - STRDEF[22], STRDEF[2], STRDEF[22], STRDEF[10], STRDEF[22], STRDEF[22], STRDEF[22]
  18 - (#keys=1) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22]
  19 - "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22]
  20 - "N"."REGNZ"[NUMBER,22]
  21 - (#keys=1) "ZD"."PL"[NUMBER,22], "ITEM_7"[NUMBER,22], "ITEM_2"[NUMBER,22], "ITEM_3"[NUMBER,2], "ITEM_4"[NUMBER,22],
       "ITEM_5"[VARCHAR2,10], "ITEM_6"[NUMBER,22]
  22 - (rowset=200) "ZD"."REGNZ"[NUMBER,22], "ZD"."PL"[NUMBER,22]
  23 - "ITEM_1"[NUMBER,22], "ITEM_2"[NUMBER,22], "ITEM_3"[NUMBER,2], "ITEM_4"[NUMBER,22], "ITEM_5"[VARCHAR2,10],
       "ITEM_6"[NUMBER,22], "ITEM_7"[NUMBER,22]
  24 - STRDEF[22], STRDEF[22], STRDEF[2], STRDEF[22], STRDEF[10], STRDEF[22], STRDEF[22]
  25 - (#keys=0) "Z"."STAN"[NUMBER,22], "ZT"."NPOZ"[NUMBER,22], "ZT"."NPOZ"[NUMBER,22], "ZT"."NSNZ"[VARCHAR2,10],
       "ZT"."NSNZ"[VARCHAR2,10], "ZTSH"."PNZT"[NUMBER,22], "Z"."REGNZ"[NUMBER,22]
  26 - (#keys=4) "Z"."STAN"[NUMBER,22], "Z"."NPOZ"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "ZT"."NPOZ"[NUMBER,22],
       "ZT"."NPOZ"[NUMBER,22], "ZT"."NSNZ"[VARCHAR2,10], "ZT"."NSNZ"[VARCHAR2,10], "ZTSH"."PNZT"[NUMBER,22], "Z"."REGNZ"[NUMBER,22]
  27 - "R"."NSNZ"[VARCHAR2,10], "R"."NPOZ"[NUMBER,22], "R"."GDIS"[NUMBER,22], "R"."STAN"[NUMBER,22]
  28 - (#keys=2) "Z"."NPOZ"[NUMBER,22], "ZT"."NPOZ"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "ZT"."NSNZ"[VARCHAR2,10],
       "ZT"."NSNZ"[VARCHAR2,10], "ZTSH"."PNZT"[NUMBER,22], "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."GDIS"[NUMBER,22],
       "ZT"."NPOZ"[NUMBER,22]
  29 - (#keys=1) "Z"."NSNZ"[VARCHAR2,10], "ZTSH"."PNZT"[NUMBER,22], "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22],
       "Z"."GDIS"[NUMBER,22], "Z"."NPOZ"[NUMBER,22]
  30 - (rowset=200) "ZTSH"."NSNZ"[VARCHAR2,10], "ZTSH"."PNZT"[NUMBER,22]
  31 - (rowset=200) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22],
       "Z"."GDIS"[NUMBER,22]
  32 - "ZT"."NSNZ"[VARCHAR2,10], "ZT"."NPOZ"[NUMBER,22]
  34 - (#keys=1) "ZP"."NM_POZ"[NUMBER,22], "ZP"."NM_ZAK"[VARCHAR2,10], "Z"."STAN"[NUMBER,22], "Z"."REGNZ"[NUMBER,22]
  35 - (rowset=200) "ZP"."REGNV_SV"[NUMBER,22], "ZP"."NM_ZAK"[VARCHAR2,10], "ZP"."NM_POZ"[NUMBER,22]
  36 - (#keys=4) "Z"."STAN"[NUMBER,22], "Z"."REGNZ"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22]
  37 - "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22],
       "Z"."REGNV_SV"[NUMBER,22], "Z"."GDIS"[NUMBER,22]
  38 - "R"."NSNZ"[VARCHAR2,10], "R"."NPOZ"[NUMBER,22], "R"."GDIS"[NUMBER,22], "R"."STAN"[NUMBER,22]
  39 - "V1"."VESPZ"[NUMBER,22]
  40 - "V1".ROWID[ROWID,10]

Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
   - this is an adaptive plan
   - 2 Sql Plan Directives used for this statement
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293222
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцовoracle12c,

Еще бы хорошо посмотреть Projection планов.



Честно говоря не понял, про Projection.

Это что, как его смотреть?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293230
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12c,

Это Column Projection Information , она там есть. Теперь то же самое на предыдущей версии
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293233
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12c если/пока с этим проблеме не решится?
А в чем проблема?
В принципе, хотя Бурлеcсон и против, это ожидаемое поведение - Oracle всегда утверждали, попугаи ничего не значат и могут быть любыми и сравнивать их в отрыве от конкретного запроса и окружения бессмысленно.

Вот если, для конкретного запроса при выборе конкретного плана оценка одного из планов сильно поплыла, тогда стоит задуматься. Если все стали в сто тыщ раз больше и выбор от этого не меняется, то в чем проблема?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293241
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, кстати. Время выполнения запроса тоже радикально изменилось?
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293244
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12c,

А, действительно, как адаптивные планы работают?
Код: plsql
1.
2.
3.
4.
show parameter optimizer
alter session set optimizer_dynamic_sampling = 11;
alter session set optimizer_adaptive_reporting_only = true;   --disable adaptive optimization 
alter session set optimizer_adaptive_reporting_only = false;  --enable adaptive optimization 
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293257
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцов,

в старой:

Код: 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.
SQL> explain plan for
  2     WITH DATA AS
  3          (SELECT DISTINCT t.ID, t.regnz_head regnz_t, t.lvl, z.stan, z.nsnz,
  4                           z.npoz, z.pl, NVL (v.vzav, v1.vespz) vzav, z.pnzt,
  5                           z.pr, t.regnz_from regnz, t.regnz regnz_p,
  6                           v.regnv_sv przv, zp.regnv_sv przz
  7                      FROM zadpr_tree_from t LEFT OUTER JOIN zadpr zp
  8                           ON t.regnz = zp.regnz
  9                           JOIN zadpr_v z ON t.regnz_from = z.regnz
 10                           LEFT OUTER JOIN pr_zakaz sv ON sv.regnv_sv =
 11                                                                      z.regnv_sv
 12                           LEFT OUTER JOIN zavka v
 13                           ON v.regnz = t.regnz_from
 14                              AND zp.regnv_sv = v.regnv_sv
 15                           LEFT OUTER JOIN potst v1
 16                           ON v1.nsnz = z.nsnz AND v1.npoz = z.npoz
 17                     WHERE t.regnz_head = 151332 /*!!!!!!!*/)
 18     SELECT   ID, regnz_t, lvl, stan, nsnz, npoz, pl, vzav,
 19              CASE
 20                 WHEN regnz_p IS NULL
 21                    THEN 1
 22                 WHEN SUM (vzav) OVER (PARTITION BY regnz_p) = 0
 23                    THEN 1
 24                 ELSE ROUND (vzav / SUM (vzav) OVER (PARTITION BY regnz_p),
 25                             4
 26                            )
 27              END vol,
 28              SUM (vzav) OVER (PARTITION BY regnz_p) svzav, pnzt, pr, regnz,
 29              regnz_p, NULL, NULL
 30         FROM DATA
 31        WHERE NVL (NVL (przv, przz), 0) = NVL (NVL (przz, przv), 0)
 32     ORDER BY ID
 33  /

Объяснено.

SQL>
SQL> rem SELECT * FROM TABLE(dbms_xplan.display(NULL,NULL,'basic'));
SQL> SELECT * FROM TABLE(dbms_xplan.display(NULL,NULL,'all'));
                                                                                
-----------------------------------------------------------------------------------------------------------------
| Id  | Operation                                     |  Name                           | Rows  | Bytes | Cost  |
-----------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                              |                                 |     1 |   166 |    17 |
|   1 |  SORT ORDER BY                                |                                 |     1 |   166 |    17 |
|   2 |   WINDOW SORT                                 |                                 |     1 |   166 |    17 |
|   3 |    VIEW                                       |                                 |     1 |   166 |    12 |
|   4 |     SORT UNIQUE                               |                                 |     1 |   126 |    12 |
|*  5 |      FILTER                                   |                                 |       |       |       |
|   6 |       NESTED LOOPS OUTER                      |                                 |       |       |       |
|   7 |        NESTED LOOPS OUTER                     |                                 |     1 |   112 |     7 |
|   8 |         VIEW                                  |                                 |     1 |    95 |     5 |
|   9 |          NESTED LOOPS OUTER                   |                                 |     1 |   103 |     5 |
|  10 |           NESTED LOOPS OUTER                  |                                 |     1 |    95 |     4 |
|  11 |            NESTED LOOPS                       |                                 |     1 |    90 |     4 |
|  12 |             TABLE ACCESS BY INDEX ROWID       | ZADPR_TREE_FROM                 |     2 |    40 |     2 |
|* 13 |              INDEX RANGE SCAN                 | ZADPR_TREE_FROM_REGNZ_HEAD_IND  |     2 |       |     1 |
|  14 |             VIEW                              | ZADPR_V                         |     1 |    70 |     1 |
|  15 |              UNION-ALL PARTITION              |                                 |       |       |       |
|  16 |               NESTED LOOPS                    |                                 |     1 |   105 |     4 |
|  17 |                NESTED LOOPS                   |                                 |     1 |    91 |     4 |
|  18 |                 NESTED LOOPS OUTER            |                                 |     1 |    82 |     3 |
|  19 |                  NESTED LOOPS OUTER           |                                 |     1 |    61 |     3 |
|  20 |                   NESTED LOOPS                |                                 |     1 |    46 |     3 |
|* 21 |                    TABLE ACCESS BY INDEX ROWID| ZADPR                           |     1 |    34 |     2 |
|* 22 |                     INDEX UNIQUE SCAN         | ZADPR_PK                        |     1 |       |     1 |
|  23 |                    TABLE ACCESS BY INDEX ROWID| SHAPKA                          |     1 |    12 |     1 |
|* 24 |                     INDEX UNIQUE SCAN         | SHAPKA_N                        |     1 |       |       |
|* 25 |                   INDEX UNIQUE SCAN           | ZAKR_ZAK_UK                     |     1 |    15 |       |
|* 26 |                  INDEX UNIQUE SCAN            | RAPORT_ZAK_VES_PK               |     1 |    21 |       |
|  27 |                 TABLE ACCESS BY INDEX ROWID   | ZADPR_DETAIL                    |     1 |     9 |     1 |
|* 28 |                  INDEX UNIQUE SCAN            | ZADPR_DETAIL_PK                 |     1 |       |       |
|* 29 |                INDEX UNIQUE SCAN              | POZIC_N                         |     1 |    14 |       |
|  30 |               NESTED LOOPS OUTER              |                                 |     1 |    91 |     4 |
|  31 |                NESTED LOOPS                   |                                 |     1 |    86 |     4 |
|  32 |                 NESTED LOOPS                  |                                 |     1 |    64 |     3 |
|  33 |                  NESTED LOOPS OUTER           |                                 |     1 |    55 |     2 |
|* 34 |                   TABLE ACCESS BY INDEX ROWID | ZADPR                           |     1 |    34 |     2 |
|* 35 |                    INDEX UNIQUE SCAN          | ZADPR_PK                        |     1 |       |     1 |
|* 36 |                   INDEX UNIQUE SCAN           | RAPORT_ZAK_VES_PK               |     1 |    21 |       |
|  37 |                  TABLE ACCESS BY INDEX ROWID  | ZADPR_DETAIL                    |     1 |     9 |     1 |
|* 38 |                   INDEX UNIQUE SCAN           | ZADPR_DETAIL_PK                 |     1 |       |       |
|  39 |                 TABLE ACCESS BY INDEX ROWID   | PR_ZAKAZ                        |     1 |    22 |     1 |
|* 40 |                  INDEX UNIQUE SCAN            | PR_ZAKAZ_PK                     |     1 |       |       |
|* 41 |                INDEX UNIQUE SCAN              | POTSH_PNZ                       |     1 |     5 |       |
|  42 |               NESTED LOOPS                    |                                 |     2 |    70 |     3 |
|* 43 |                TABLE ACCESS BY INDEX ROWID    | ZADPR                           |     1 |    30 |     2 |
|* 44 |                 INDEX UNIQUE SCAN             | ZADPR_PK                        |     1 |       |     1 |
|* 45 |                INDEX RANGE SCAN               | NAZNASH_REGNZ_IND               |     2 |    10 |     1 |
|* 46 |            INDEX UNIQUE SCAN                  | PR_ZAKAZ_PK                     |     1 |     5 |       |
|  47 |           TABLE ACCESS BY INDEX ROWID         | ZADPR                           |     1 |     8 |     1 |
|* 48 |            INDEX UNIQUE SCAN                  | ZADPR_PK                        |     1 |       |       |
|  49 |         TABLE ACCESS BY INDEX ROWID           | POTST                           |     1 |    17 |     2 |
|* 50 |          INDEX RANGE SCAN                     | POTST_ZAK                       |     1 |       |     1 |
|* 51 |        TABLE ACCESS BY INDEX ROWID            | ZAVKA                           |     1 |    14 |     2 |
|* 52 |         INDEX RANGE SCAN                      | ZAVKA_REGNVSV_IND               |     1 |       |     1 |
-----------------------------------------------------------------------------------------------------------------
                                                                                
Predicate Information (identified by operation id):                             
---------------------------------------------------                             
                                                                                
   5 - filter(NVL(NVL("V"."REGNV_SV","from$_subquery$_007"."REGNV_SV_10"),0)=NVL(NVL("from$_subquery$_007"."REGNV
              _SV_10","V"."REGNV_SV"),0))                                       
  13 - access("T"."REGNZ_HEAD"=151332)                                          
  21 - filter("Z"."PR"=1)                                                       
  22 - access("T"."REGNZ_FROM"="Z"."REGNZ")                                     
  24 - access("Z"."NSNZ"="ZTSH"."NSNZ")                                         
  25 - access("Z"."NSNZ"="ZZ"."NSNZ"(+) AND "Z"."NPOZ"="ZZ"."NPOZ"(+))          
  26 - access("Z"."NSNZ"="R"."NSNZ"(+) AND "Z"."NPOZ"="R"."NPOZ"(+) AND "Z"."GDIS"="R"."GDIS"(+) AND
              "Z"."STAN"="R"."STAN"(+))                                         
  28 - access("Z"."REGNZ"="ZD"."REGNZ")                                         
  29 - access("Z"."NSNZ"="ZT"."NSNZ" AND "Z"."NPOZ"="ZT"."NPOZ")                
  34 - filter("Z"."REGNV_SV" IS NOT NULL AND "Z"."PR"=2)                        
  35 - access("T"."REGNZ_FROM"="Z"."REGNZ")                                     
  36 - access("Z"."NSNZ"="R"."NSNZ"(+) AND "Z"."NPOZ"="R"."NPOZ"(+) AND "Z"."GDIS"="R"."GDIS"(+) AND
              "Z"."STAN"="R"."STAN"(+))                                         
  38 - access("Z"."REGNZ"="ZD"."REGNZ")                                         
  40 - access("Z"."REGNV_SV"="ZP"."REGNV_SV")                                   
  41 - access("ZP"."PNZ"="ZPS"."PNZ"(+))                                        
  43 - filter("Z"."PR"=0)                                                       
  44 - access("T"."REGNZ_FROM"="Z"."REGNZ")                                     
  45 - access("Z"."REGNZ"="N"."REGNZ")                                          
  46 - access("SV"."REGNV_SV"(+)="Z"."REGNV_SV")                                
  48 - access("T"."REGNZ"="ZP"."REGNZ"(+))                                      
  50 - access("V1"."NSNZ"(+)="from$_subquery$_007"."NSNZ_15" AND "V1"."NPOZ"(+)="from$_subquery$_007"."NPOZ_16")
  51 - filter("V"."REGNZ"(+)="from$_subquery$_007"."REGNZ_FROM_3" AND "V"."REGNZ"(+) IS NOT NULL)
  52 - access("from$_subquery$_007"."REGNV_SV_10"="V"."REGNV_SV"(+))            
                                                                                
Note: cpu costing is off                                                        


но тут firs_rows, а в новой теперь all_rows
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293260
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцов,

никто не стал бы смотреть планы,
если бы запрос завершался за реальное время...
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293280
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dba123oracle12c,

А, действительно, как адаптивные планы работают?

Код: plsql
1.
2.
3.
4.
show parameter optimizer
alter session set optimizer_dynamic_sampling = 11;
alter session set optimizer_adaptive_reporting_only = true;   --disable adaptive optimization 
alter session set optimizer_adaptive_reporting_only = false;  --enable adaptive optimization 



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL> show parameter optimizer
optimizer_adaptive_features          boolean     TRUE
optimizer_adaptive_reporting_only    boolean     FALSE
optimizer_capture_sql_plan_baselines boolean     FALSE
optimizer_dynamic_sampling           integer     2
optimizer_features_enable            string      12.1.0.2
optimizer_index_caching              integer     0
optimizer_index_cost_adj             integer     100
optimizer_inmemory_aware             boolean     TRUE
optimizer_mode                       string      ALL_ROWS
optimizer_secure_view_merging        boolean     TRUE
optimizer_use_invisible_indexes      boolean     FALSE
optimizer_use_pending_statistics     boolean     FALSE
optimizer_use_sql_plan_baselines     boolean     TRUE
SQL> alter session set optimizer_dynamic_sampling = 11;

Сеанс изменен.

SQL> alter session set optimizer_adaptive_reporting_only = true;



между optimizer_dynamic_sampling = 11;
и тем что по умолчанию
в планах некоторая разница есть,
но стоимось та же.

В планах между
optimizer_adaptive_reporting_only = true;
и
optimizer_adaptive_reporting_only = false;
разницы не наблюдается.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293293
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну

access full вместо ACCESS BY INDEX на ZADPR, SHAPKA
и
UNION-ALL вместо UNION-ALL PARTITION

проверьте индексы, перестройте.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293342
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fogelну

access full вместо ACCESS BY INDEX на ZADPR, SHAPKA
и
UNION-ALL вместо UNION-ALL PARTITION

проверьте индексы, перестройте.


Индексы проверены,
разницы со старой БД не замечено...
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293376
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12cFogelну

access full вместо ACCESS BY INDEX на ZADPR, SHAPKA
и
UNION-ALL вместо UNION-ALL PARTITION

проверьте индексы, перестройте.


Индексы проверены,
разницы со старой БД не замечено...

выше уже заметили, что card увеличился, т.е. набор данных изменился.

лично я сверил бы ddl объектов (не потерялись ли какие-то партиции и прочие подробности при клонировании схемы/объектов).
а также проверил, что в новой БД при заливке новых данных они попали в соответствующие партиции.
глобальные индексы на партициях принудительно перестроил бы, поскольку они могут быть "разрежены" после изменений - что тоже может привести к подобному изменению плана.

также у вас в запросе используются не только таблицы, но и представления.
если они материализованные, то соответственно, обновил бы их.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293632
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
oracle12cВ oracle 12.1.0.2.0 никто не сталкивался с тем,
что стоимость плана выполнения становилась
в 100.000 раз больше
чем в предыдущих версиях
при _всех_ равных условиях ?а нельзя по-человечески приложить оба плана с обоих версий, чтобы сравнивать можно было? да и 10053 трассу не забыть?
Принципиально разницу такую легко получить, например, из-за того, что теперь скалярные подзапросы входят в стоимость, в отличие от версий до 12с
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293652
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понимаю,
проблема в наличии FULL SCAN в новой БД,
который отсутствует в старой БД,
а не в чем-то другом?

Код: 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.
SQL> alter session set optimizer_dynamic_sampling  =    1     ;

Сеанс изменен.

SQL> alter session set optimizer_features_enable  = '9.2.0'   ;

Сеанс изменен.

SQL> alter session set optimizer_index_caching    =    0      ;

Сеанс изменен.

SQL> alter session set optimizer_index_cost_adj   =  100      ;

Сеанс изменен.

SQL> alter session set optimizer_max_permutations  =    2000  ;

Сеанс изменен.

SQL> alter session set optimizer_mode              =   'RULE' ;

Сеанс изменен.

SQL>
SQL> explain plan for
  2     WITH DATA AS
  3          (SELECT DISTINCT t.ID, t.regnz_head regnz_t, t.lvl, z.stan, z.nsnz,
  4                           z.npoz, z.pl, NVL (v.vzav, v1.vespz) vzav, z.pnzt,
  5                           z.pr, t.regnz_from regnz, t.regnz regnz_p,
  6                           v.regnv_sv przv, zp.regnv_sv przz
  7                      FROM zadpr_tree_from t LEFT OUTER JOIN zadpr zp
  8                           ON t.regnz = zp.regnz
  9                           JOIN zadpr_v z ON t.regnz_from = z.regnz
 10                           LEFT OUTER JOIN pr_zakaz sv ON sv.regnv_sv =
 11                                                                      z.regnv_sv
 12                           LEFT OUTER JOIN zavka v
 13                           ON v.regnz = t.regnz_from
 14                              AND zp.regnv_sv = v.regnv_sv
 15                           LEFT OUTER JOIN potst v1
 16                           ON v1.nsnz = z.nsnz AND v1.npoz = z.npoz
 17                     WHERE t.regnz_head = 151332 /*!!!!!!!*/)
 18     SELECT   ID, regnz_t, lvl, stan, nsnz, npoz, pl, vzav,
 19              CASE
 20                 WHEN regnz_p IS NULL
 21                    THEN 1
 22                 WHEN SUM (vzav) OVER (PARTITION BY regnz_p) = 0
 23                    THEN 1
 24                 ELSE ROUND (vzav / SUM (vzav) OVER (PARTITION BY regnz_p),
 25                             4
 26                            )
 27              END vol,
 28              SUM (vzav) OVER (PARTITION BY regnz_p) svzav, pnzt, pr, regnz,
 29              regnz_p, NULL, NULL
 30         FROM DATA
 31        WHERE NVL (NVL (przv, przz), 0) = NVL (NVL (przz, przv), 0)
 32     ORDER BY ID
 33  /

Объяснено.

SQL>
SQL> rem SELECT * FROM TABLE(dbms_xplan.display(NULL,NULL,'basic'));
SQL> SELECT * FROM TABLE(dbms_xplan.display(NULL,NULL,'all'));
Plan hash value: 260516165

----------------------------------------------------------------------------------------------------------------
| Id  | Operation                                     | Name                           | Rows  | Bytes | Cost  |
----------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                              |                                |     1 |   166 |   117 |
|   1 |  SORT ORDER BY                                |                                |     1 |   166 |   117 |
|   2 |   WINDOW SORT                                 |                                |     1 |   166 |   117 |
|   3 |    VIEW                                       |                                |     1 |   166 |    45 |
|   4 |     SORT UNIQUE                               |                                |     1 |   126 |    45 |
|*  5 |      FILTER                                   |                                |       |       |       |
|   6 |       NESTED LOOPS OUTER                      |                                |     1 |   126 |     9 |
|   7 |        NESTED LOOPS OUTER                     |                                |     1 |   112 |     7 |
|   8 |         VIEW                                  |                                |     1 |    95 |     5 |
|   9 |          NESTED LOOPS OUTER                   |                                |     1 |   104 |     5 |
|  10 |           NESTED LOOPS OUTER                  |                                |     1 |    96 |     4 |
|  11 |            NESTED LOOPS                       |                                |     1 |    91 |     4 |
|  12 |             TABLE ACCESS BY INDEX ROWID       | ZADPR_TREE_FROM                |     2 |    42 |     2 |
|* 13 |              INDEX RANGE SCAN                 | ZADPR_TREE_FROM_REGNZ_HEAD_IND |     2 |       |     1 |
|  14 |             VIEW                              | ZADPR_V                        |     1 |    70 |     1 |
|  15 |              UNION-ALL PARTITION              |                                |       |       |       |
|  16 |               NESTED LOOPS                    |                                |     1 |   105 |     6 |
|  17 |                NESTED LOOPS                   |                                |     1 |    91 |     5 |
|  18 |                 NESTED LOOPS OUTER            |                                |     1 |    82 |     4 |
|  19 |                  NESTED LOOPS OUTER           |                                |     1 |    61 |     3 |
|  20 |                   NESTED LOOPS                |                                |     1 |    46 |     3 |
|* 21 |                    TABLE ACCESS BY INDEX ROWID| ZADPR                          |     1 |    34 |     2 |
|* 22 |                     INDEX UNIQUE SCAN         | ZADPR_PK                       |     1 |       |     1 |
|  23 |                    TABLE ACCESS BY INDEX ROWID| SHAPKA                         |   137K|  1610K|     1 |
|* 24 |                     INDEX UNIQUE SCAN         | SHAPKA_N                       |     1 |       |       |
|* 25 |                   INDEX UNIQUE SCAN           | ZAKR_ZAK_UK                    | 96015 |  1406K|       |
|* 26 |                  INDEX UNIQUE SCAN            | RAPORT_ZAK_VES_PK              |   193K|  3968K|     1 |
|  27 |                 TABLE ACCESS BY INDEX ROWID   | ZADPR_DETAIL                   |   168K|  1476K|     1 |
|* 28 |                  INDEX UNIQUE SCAN            | ZADPR_DETAIL_PK                |     1 |       |       |
|* 29 |                INDEX UNIQUE SCAN              | POZIC_N                        |   504K|  6892K|     1 |
|  30 |               NESTED LOOPS OUTER              |                                |     1 |    91 |     5 |
|  31 |                NESTED LOOPS                   |                                |     1 |    86 |     5 |
|  32 |                 NESTED LOOPS                  |                                |     1 |    64 |     4 |
|  33 |                  NESTED LOOPS OUTER           |                                |     1 |    55 |     3 |
|* 34 |                   TABLE ACCESS BY INDEX ROWID | ZADPR                          |     1 |    34 |     2 |
|* 35 |                    INDEX UNIQUE SCAN          | ZADPR_PK                       |     1 |       |     1 |
|* 36 |                   INDEX UNIQUE SCAN           | RAPORT_ZAK_VES_PK              |   193K|  3968K|     1 |
|  37 |                  TABLE ACCESS BY INDEX ROWID  | ZADPR_DETAIL                   |   168K|  1476K|     1 |
|* 38 |                   INDEX UNIQUE SCAN           | ZADPR_DETAIL_PK                |     1 |       |       |
|  39 |                 TABLE ACCESS BY INDEX ROWID   | PR_ZAKAZ                       | 67128 |  1442K|     1 |
|* 40 |                  INDEX UNIQUE SCAN            | PR_ZAKAZ_PK                    |     1 |       |       |
|* 41 |                INDEX UNIQUE SCAN              | POTSH_PNZ                      | 60739 |   296K|       |
|  42 |               NESTED LOOPS                    |                                |     2 |    70 |     3 |
|* 43 |                TABLE ACCESS BY INDEX ROWID    | ZADPR                          |     1 |    30 |     2 |
|* 44 |                 INDEX UNIQUE SCAN             | ZADPR_PK                       |     1 |       |     1 |
|* 45 |                INDEX RANGE SCAN               | NAZNASH_REGNZ_IND              |     2 |    10 |     1 |
|* 46 |            INDEX UNIQUE SCAN                  | PR_ZAKAZ_PK                    |     1 |     5 |       |
|  47 |           TABLE ACCESS BY INDEX ROWID         | ZADPR                          |     1 |     8 |     1 |
|* 48 |            INDEX UNIQUE SCAN                  | ZADPR_PK                       |     1 |       |       |
|  49 |         TABLE ACCESS BY INDEX ROWID           | POTST                          |     1 |    17 |     2 |
|* 50 |          INDEX RANGE SCAN                     | POTST_ZAK                      |     1 |       |     1 |
|* 51 |        TABLE ACCESS BY INDEX ROWID            | ZAVKA                          |     1 |    14 |     2 |
|* 52 |         INDEX RANGE SCAN                      | ZAVKA_REGNVSV_IND              |     1 |       |     1 |
----------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$14
   3 - SEL$DDC3E74F / DATA@SEL$14
   4 - SEL$DDC3E74F
   8 - SEL$92772677 / from$_subquery$_007@SEL$10
   9 - SEL$92772677
  12 - SEL$92772677 / T@SEL$2
  13 - SEL$92772677 / T@SEL$2
  14 - SET$AD7CC163 / Z@SEL$3
  15 - SET$AD7CC163
  16 - SEL$9AACC4F0
  21 - SEL$9AACC4F0 / Z@SEL$4
  22 - SEL$9AACC4F0 / Z@SEL$4
  23 - SEL$9AACC4F0 / ZTSH@SEL$4
  24 - SEL$9AACC4F0 / ZTSH@SEL$4
  25 - SEL$9AACC4F0 / ZZ@SEL$4
  26 - SEL$9AACC4F0 / R@SEL$4
  27 - SEL$9AACC4F0 / ZD@SEL$4
  28 - SEL$9AACC4F0 / ZD@SEL$4
  29 - SEL$9AACC4F0 / ZT@SEL$4
  30 - SEL$693A5C0E
  34 - SEL$693A5C0E / Z@SEL$5
  35 - SEL$693A5C0E / Z@SEL$5
  36 - SEL$693A5C0E / R@SEL$5
  37 - SEL$693A5C0E / ZD@SEL$5
  38 - SEL$693A5C0E / ZD@SEL$5
  39 - SEL$693A5C0E / ZP@SEL$5
  40 - SEL$693A5C0E / ZP@SEL$5
  41 - SEL$693A5C0E / ZPS@SEL$5
  42 - SEL$1FB8A168
  43 - SEL$1FB8A168 / Z@SEL$6
  44 - SEL$1FB8A168 / Z@SEL$6
  45 - SEL$1FB8A168 / N@SEL$6
  46 - SEL$92772677 / SV@SEL$7
  47 - SEL$92772677 / ZP@SEL$1
  48 - SEL$92772677 / ZP@SEL$1
  49 - SEL$DDC3E74F / V1@SEL$11
  50 - SEL$DDC3E74F / V1@SEL$11
  51 - SEL$DDC3E74F / V@SEL$9
  52 - SEL$DDC3E74F / V@SEL$9

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

   5 - filter(NVL(NVL("V"."REGNV_SV","from$_subquery$_007"."QCSJ_C000000000500000"),0)=NVL(NVL("from$_su
              bquery$_007"."QCSJ_C000000000500000","V"."REGNV_SV"),0))
  13 - access("T"."REGNZ_HEAD"=151332)
  21 - filter("Z"."PR"=1)
  22 - access("Z"."REGNZ"="T"."REGNZ_FROM")
  24 - access("Z"."NSNZ"="ZTSH"."NSNZ")
  25 - access("Z"."NSNZ"="ZZ"."NSNZ"(+) AND "Z"."NPOZ"="ZZ"."NPOZ"(+))
  26 - access("Z"."NSNZ"="R"."NSNZ"(+) AND "Z"."NPOZ"="R"."NPOZ"(+) AND "Z"."GDIS"="R"."GDIS"(+) AND
              "Z"."STAN"="R"."STAN"(+))
  28 - access("Z"."REGNZ"="ZD"."REGNZ")
  29 - access("Z"."NSNZ"="ZT"."NSNZ" AND "Z"."NPOZ"="ZT"."NPOZ")
  34 - filter("Z"."REGNV_SV" IS NOT NULL AND "Z"."PR"=2)
  35 - access("Z"."REGNZ"="T"."REGNZ_FROM")
  36 - access("Z"."NSNZ"="R"."NSNZ"(+) AND "Z"."NPOZ"="R"."NPOZ"(+) AND "Z"."GDIS"="R"."GDIS"(+) AND
              "Z"."STAN"="R"."STAN"(+))
  38 - access("Z"."REGNZ"="ZD"."REGNZ")
  40 - access("Z"."REGNV_SV"="ZP"."REGNV_SV")
  41 - access("ZP"."PNZ"="ZPS"."PNZ"(+))
  43 - filter("Z"."PR"=0)
  44 - access("Z"."REGNZ"="T"."REGNZ_FROM")
  45 - access("Z"."REGNZ"="N"."REGNZ")
  46 - access("SV"."REGNV_SV"(+)="Z"."REGNV_SV")
  48 - access("T"."REGNZ"="ZP"."REGNZ"(+))
  50 - access("V1"."NSNZ"(+)="from$_subquery$_007"."QCSJ_C000000000500007" AND
              "V1"."NPOZ"(+)="from$_subquery$_007"."QCSJ_C000000000500009")
  51 - filter("V"."REGNZ"(+)="T"."REGNZ_FROM" AND "V"."REGNZ"(+) IS NOT NULL)
  52 - access("ZP"."REGNV_SV"="V"."REGNV_SV"(+))

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - (#keys=1) "ID"[NUMBER,22], NULL[0], "REGNZ_T"[NUMBER,22], "LVL"[NUMBER,22], "STAN"[NUMBER,22],
       "NSNZ"[VARCHAR2,10], "NPOZ"[NUMBER,22], "PL"[NUMBER,22], "VZAV"[NUMBER,22], CASE  WHEN "REGNZ_P" IS
       NULL THEN 1 WHEN SUM("VZAV") OVER ( PARTITION BY "REGNZ_P")=0 THEN 1 ELSE ROUND("VZAV"/SUM("VZAV") OVER
       ( PARTITION BY "REGNZ_P"),4) END [22], SUM("VZAV") OVER ( PARTITION BY "REGNZ_P")[22],
       "PNZT"[NUMBER,22], "PR"[NUMBER,2], "REGNZ"[NUMBER,22], "REGNZ_P"[NUMBER,22], NULL[0]
   2 - (#keys=1) "REGNZ_P"[NUMBER,22], "ID"[NUMBER,22], "REGNZ_T"[NUMBER,22], "LVL"[NUMBER,22],
       "STAN"[NUMBER,22], "NSNZ"[VARCHAR2,10], "NPOZ"[NUMBER,22], "PL"[NUMBER,22], "VZAV"[NUMBER,22],
       "PNZT"[NUMBER,22], "PR"[NUMBER,2], "REGNZ"[NUMBER,22], "PRZZ"[NUMBER,22], "PRZV"[NUMBER,22],
       SUM("VZAV") OVER ( PARTITION BY "REGNZ_P")[22]
   3 - "ID"[NUMBER,22], "REGNZ_T"[NUMBER,22], "LVL"[NUMBER,22], "STAN"[NUMBER,22], "NSNZ"[VARCHAR2,10],
       "NPOZ"[NUMBER,22], "PL"[NUMBER,22], "VZAV"[NUMBER,22], "PNZT"[NUMBER,22], "PR"[NUMBER,2],
       "REGNZ"[NUMBER,22], "REGNZ_P"[NUMBER,22], "PRZV"[NUMBER,22], "PRZZ"[NUMBER,22]
   4 - (#keys=14) "from$_subquery$_007"."ID"[NUMBER,22], "from$_subquery$_007"."REGNZ_HEAD"[NUMBER,22],
       "from$_subquery$_007"."LVL"[NUMBER,22], "from$_subquery$_007"."QCSJ_C000000000500005"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500007"[VARCHAR2,10],
       "from$_subquery$_007"."QCSJ_C000000000500009"[NUMBER,22], "from$_subquery$_007"."PL"[NUMBER,22],
       NVL("V"."VZAV","V1"."VESPZ")[22], "from$_subquery$_007"."PNZT"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500003"[NUMBER,2], "from$_subquery$_007"."REGNZ_FROM"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000300000"[NUMBER,22], "V"."REGNV_SV"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500000"[NUMBER,22]
   5 - "from$_subquery$_007"."ID"[NUMBER,22], "from$_subquery$_007"."REGNZ_HEAD"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000300000"[NUMBER,22], "T"."REGNZ_FROM"[NUMBER,22],
       "from$_subquery$_007"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500003"[NUMBER,2],
       "from$_subquery$_007"."QCSJ_C000000000500005"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500007"[VARCHAR2,10],
       "from$_subquery$_007"."QCSJ_C000000000500009"[NUMBER,22], "from$_subquery$_007"."PL"[NUMBER,22],
       "from$_subquery$_007"."PNZT"[NUMBER,22], "V1"."VESPZ"[NUMBER,22], "V"."VZAV"[NUMBER,22],
       "V"."REGNV_SV"[NUMBER,22]
   6 - (#keys=0) "from$_subquery$_007"."ID"[NUMBER,22], "from$_subquery$_007"."REGNZ_HEAD"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000300000"[NUMBER,22], "T"."REGNZ_FROM"[NUMBER,22],
       "from$_subquery$_007"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500003"[NUMBER,2],
       "from$_subquery$_007"."QCSJ_C000000000500005"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500007"[VARCHAR2,10],
       "from$_subquery$_007"."QCSJ_C000000000500009"[NUMBER,22], "from$_subquery$_007"."PL"[NUMBER,22],
       "from$_subquery$_007"."PNZT"[NUMBER,22], "V1"."VESPZ"[NUMBER,22], "V"."VZAV"[NUMBER,22],
       "V"."REGNV_SV"[NUMBER,22]
   7 - (#keys=0) "from$_subquery$_007"."ID"[NUMBER,22], "from$_subquery$_007"."REGNZ_HEAD"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000300000"[NUMBER,22], "T"."REGNZ_FROM"[NUMBER,22],
       "from$_subquery$_007"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500003"[NUMBER,2],
       "from$_subquery$_007"."QCSJ_C000000000500005"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500007"[VARCHAR2,10],
       "from$_subquery$_007"."QCSJ_C000000000500009"[NUMBER,22], "from$_subquery$_007"."PL"[NUMBER,22],
       "from$_subquery$_007"."PNZT"[NUMBER,22], "V1"."VESPZ"[NUMBER,22]
   8 - "from$_subquery$_007"."ID"[NUMBER,22], "from$_subquery$_007"."REGNZ_HEAD"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000300000"[NUMBER,22], "T"."REGNZ_FROM"[NUMBER,22],
       "from$_subquery$_007"."LVL"[NUMBER,22], "ZP"."REGNV_SV"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500003"[NUMBER,2],
       "from$_subquery$_007"."QCSJ_C000000000500005"[NUMBER,22],
       "from$_subquery$_007"."QCSJ_C000000000500007"[VARCHAR2,10],
       "from$_subquery$_007"."QCSJ_C000000000500009"[NUMBER,22], "from$_subquery$_007"."PL"[NUMBER,22],
       "from$_subquery$_007"."PNZT"[NUMBER,22]
   9 - (#keys=0) "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22],
       "T"."REGNZ_FROM"[NUMBER,22], "T"."LVL"[NUMBER,22], "Z"."PR"[NUMBER,2], "Z"."STAN"[NUMBER,22],
       "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22], "Z"."PL"[NUMBER,22], "Z"."PNZT"[NUMBER,22],
       "ZP"."REGNV_SV"[NUMBER,22]
  10 - (#keys=0) "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22],
       "T"."REGNZ_FROM"[NUMBER,22], "T"."LVL"[NUMBER,22], "Z"."PR"[NUMBER,2], "Z"."STAN"[NUMBER,22],
       "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22], "Z"."PL"[NUMBER,22], "Z"."PNZT"[NUMBER,22]
  11 - (#keys=0) "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22],
       "T"."REGNZ_FROM"[NUMBER,22], "T"."LVL"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22], "Z"."PR"[NUMBER,2],
       "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22], "Z"."PL"[NUMBER,22],
       "Z"."PNZT"[NUMBER,22]
  12 - "T"."ID"[NUMBER,22], "T"."REGNZ_HEAD"[NUMBER,22], "T"."REGNZ"[NUMBER,22],
       "T"."REGNZ_FROM"[NUMBER,22], "T"."LVL"[NUMBER,22]
  13 - "T".ROWID[ROWID,10], "T"."REGNZ_HEAD"[NUMBER,22]
  14 - "Z"."REGNV_SV"[NUMBER,22], "Z"."PR"[NUMBER,2], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10],
       "Z"."NPOZ"[NUMBER,22], "Z"."PL"[NUMBER,22], "Z"."PNZT"[NUMBER,22]
  15 - STRDEF[22], STRDEF[22], STRDEF[2], STRDEF[22], STRDEF[10], STRDEF[22], STRDEF[22], STRDEF[22]
  16 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22],
       "ZTSH"."PNZT"[NUMBER,22], "ZD"."PL"[NUMBER,22], "ZT"."NSNZ"[VARCHAR2,10], "ZT"."NPOZ"[NUMBER,22]
  17 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10],
       "Z"."NPOZ"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22], "ZTSH"."PNZT"[NUMBER,22], "ZD"."PL"[NUMBER,22]
  18 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10],
       "Z"."NPOZ"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22], "ZTSH"."PNZT"[NUMBER,22]
  19 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10],
       "Z"."NPOZ"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22], "Z"."GDIS"[NUMBER,22], "ZTSH"."PNZT"[NUMBER,22]
  20 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10],
       "Z"."NPOZ"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22], "Z"."GDIS"[NUMBER,22], "ZTSH"."PNZT"[NUMBER,22]
  21 - "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22],
       "Z"."REGNV_SV"[NUMBER,22], "Z"."GDIS"[NUMBER,22]
  22 - "Z".ROWID[ROWID,10], "Z"."REGNZ"[NUMBER,22]
  23 - "ZTSH"."PNZT"[NUMBER,22]
  24 - "ZTSH".ROWID[ROWID,10]
  27 - "ZD"."PL"[NUMBER,22]
  28 - "ZD".ROWID[ROWID,10]
  29 - "ZT"."NSNZ"[VARCHAR2,10], "ZT"."NPOZ"[NUMBER,22]
  30 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22],
       "ZD"."PL"[NUMBER,22], "ZP"."NM_ZAK"[VARCHAR2,10], "ZP"."NM_POZ"[NUMBER,22]
  31 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22],
       "ZD"."PL"[NUMBER,22], "ZP"."NM_ZAK"[VARCHAR2,10], "ZP"."NM_POZ"[NUMBER,22], "ZP"."PNZ"[NUMBER,22]
  32 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22],
       "ZD"."PL"[NUMBER,22]
  33 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22]
  34 - "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22],
       "Z"."REGNV_SV"[NUMBER,22], "Z"."GDIS"[NUMBER,22]
  35 - "Z".ROWID[ROWID,10], "Z"."REGNZ"[NUMBER,22]
  37 - "ZD"."PL"[NUMBER,22]
  38 - "ZD".ROWID[ROWID,10]
  39 - "ZP"."NM_ZAK"[VARCHAR2,10], "ZP"."NM_POZ"[NUMBER,22], "ZP"."PNZ"[NUMBER,22]
  40 - "ZP".ROWID[ROWID,10]
  42 - (#keys=0) "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10],
       "Z"."NPOZ"[NUMBER,22], "Z"."REGNV_SV"[NUMBER,22]
  43 - "Z"."REGNZ"[NUMBER,22], "Z"."STAN"[NUMBER,22], "Z"."NSNZ"[VARCHAR2,10], "Z"."NPOZ"[NUMBER,22],
       "Z"."REGNV_SV"[NUMBER,22]
  44 - "Z".ROWID[ROWID,10], "Z"."REGNZ"[NUMBER,22]
  47 - "ZP"."REGNV_SV"[NUMBER,22]
  48 - "ZP".ROWID[ROWID,10]
  49 - "V1"."VESPZ"[NUMBER,22]
  50 - "V1".ROWID[ROWID,10]
  51 - "V"."VZAV"[NUMBER,22], "V"."REGNV_SV"[NUMBER,22]
  52 - "V".ROWID[ROWID,10], "V"."REGNV_SV"[NUMBER,22]

Note
-----
   - cpu costing is off (consider enabling it)



Запускаю то же тестовый sql, который выше указан:

Код: 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.
SQL> show parameter optimizer

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_adaptive_features          boolean     TRUE
optimizer_adaptive_reporting_only    boolean     FALSE
optimizer_capture_sql_plan_baselines boolean     FALSE
optimizer_dynamic_sampling           integer     2
optimizer_features_enable            string      12.1.0.2
optimizer_index_caching              integer     0
optimizer_index_cost_adj             integer     100
optimizer_inmemory_aware             boolean     TRUE
optimizer_mode                       string      ALL_ROWS
optimizer_secure_view_merging        boolean     TRUE
optimizer_use_invisible_indexes      boolean     FALSE
optimizer_use_pending_statistics     boolean     FALSE
optimizer_use_sql_plan_baselines     boolean     TRUE


Затрач.время: 00:00:01.43

SQL> /

Затрач.время: 00:00:01.48

SQL> /

Затрач.время: 00:00:01.00

SQL> alter session set optimizer_dynamic_sampling  =    1     ;
SQL> alter session set optimizer_features_enable  = '9.2.0'   ;
SQL> alter session set optimizer_index_caching    =    0      ;
SQL> alter session set optimizer_index_cost_adj   =  100      ;
SQL> alter session set optimizer_max_permutations  =    2000  ;
SQL> alter session set optimizer_mode              =   'RULE' ;


SQL> /

Затрач.время: 00:00:00.00

SQL> /
Затрач.время: 00:00:00.01

SQL> /
Затрач.время: 00:00:00.00



Как говорится, почувствуйте разницу...

???
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293713
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12cКак говорится, почувствуйте разницу...

???

очень интересно.
намотаю на ус.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293739
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевА в чем проблема?
В принципе, хотя Бурлеcсон и против, это ожидаемое поведение - Oracle всегда утверждали, попугаи ничего не значат и могут быть любыми и сравнивать их в отрыве от конкретного запроса и окружения бессмысленно.

Льюис показывал, как эти попугаи рассчитываются. Смысл в них очень даже есть. Но надо понимать, как они рассчитываются, на какой основе, какие параметры задействованы, чтобы апельсины с яблоками не сравнивать.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293745
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oracle12c,

Вот так гораздо интересней и информативней. А теперь снимите трассу 10053 и посмотрите на каком шаге оптимизатор оступается.
...
Рейтинг: 0 / 0
Глюки оптимизатора 12с или мои ?
    #39293884
oracle12c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцовoracle12c,

Вот так гораздо интересней и информативней. А теперь снимите трассу 10053 и посмотрите на каком шаге оптимизатор оступается.

Можно конкретный алгоритм изложить,
как определить на каком шаге оптимизатор ошибается ?


Если будет известно, на каком шаге оптимизатор ошибается,
то что тогда ???
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Глюки оптимизатора 12с или мои ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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