powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / задачка оптимизации производительности для продвинутых :-)
21 сообщений из 46, страница 2 из 2
задачка оптимизации производительности для продвинутых :-)
    #39380180
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora601DBAshnik,

https://oracle-base.com/articles/9i/dbms_xplan#gather_plan_statistics_hint

Cпасибо! Ну как смог так вытянул, не судите строго: :-)

Код: 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.
...
117 rows selected.

PLAN_TABLE_OUTPUT                                                                                                                 
----------------------------------------------------------------------------------------------------------------------------------
SQL_ID  bs8pkhz34m1uk, child number 0                                                                                             
-------------------------------------                                                                                             
select  /*+    GATHER_PLAN_STATISTICS    leading(T2 T1 T3)                                                                        
no_merge(t2)    no_merge(t3)    use_nl(T1)    use_hash(T3)                                                                        
swap_join_inputs(T3)    index_ffs(@SEL$2 OS_ELEMENT@SEL$2                                                                         
OS_ELEMENT_INDEX1)    index_ffs(@SEL$3 OS_ELEMENT@SEL$3                                                                           
OS_ELEMENT_INDEX1)  */    distinct T1."CMPCODE" "c1"  from                                                                        
"DACODB"."OS_BALANCE" T1,      "DACODB"."OS_EL6_ELEMENT" T2,                                                                    
"DACODB"."OS_EL1_ELEMENT" T3  where T1."CMPCODE"=T2."EL6_CMPCODE" and                                                            
T1."EL6"=T2."EL6_CODE" and  T1."CMPCODE"=T3."EL1_CMPCODE" and                                                                     
T1."EL1"=T3."EL1_CODE" and       T1."EL3"<>:"SYS_B_0" and                                                                         
--:"SYS_B_09" and       T1."EL4"<>:"SYS_B_1" and -- :"SYS_B_10" and                                                               
  T2."EL6_CODE"<>:"SYS_B_2"                                                                                                       
                                                                                                                                  
Plan hash value: 825003594                                                                                                        
                                                                                                                                  
----------------------------------------------------------------------------------------------------------------------------------
---------                                                                                                                         
                                                                                                                                  
| Id  | Operation              | Name               | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |  OMem |  1Mem | U
sed-Mem |                                                                                                                         

PLAN_TABLE_OUTPUT                                                                                                                 
----------------------------------------------------------------------------------------------------------------------------------
                                                                                                                                  
----------------------------------------------------------------------------------------------------------------------------------
---------                                                                                                                         
                                                                                                                                  
|   0 | SELECT STATEMENT       |                    |      1 |        |    117 |00:00:38.44 |    1186K|   1174K|       |       |  
        |                                                                                                                         
                                                                                                                                  
|   1 |  HASH UNIQUE           |                    |      1 |    119 |    117 |00:00:38.44 |    1186K|   1174K|    21M|  4264K| 1
362K (0)|                                                                                                                         
                                                                                                                                  
|*  2 |   HASH JOIN            |                    |      1 |    250K|    402K|00:00:38.51 |    1186K|   1174K|  8988K|  3467K| 8
790K (0)|                                                                                                                         
                                                                                                                                  
|   3 |    VIEW                | OS_EL1_ELEMENT    |      1 |    120K|    121K|00:00:00.31 |    5552 |      0 |       |       |  
        |                                                                                                                         
                                                                                                                                  
|*  4 |     INDEX SKIP SCAN    | OS_ELEMENT_INDEX1 |      1 |    120K|    121K|00:00:00.28 |    5552 |      0 |       |       |  
        |                                                                                                                         
                                                                                                                                  
|*  5 |    HASH JOIN           |                    |      1 |   2309K|    402K|00:00:37.90 |    1180K|   1174K|    12M|  3196K|  
 12M (0)|                                                                                                                         

PLAN_TABLE_OUTPUT                                                                                                                 
----------------------------------------------------------------------------------------------------------------------------------
                                                                                                                                  
|   6 |     VIEW               | OS_EL6_ELEMENT    |      1 |    163K|    163K|00:00:00.32 |    5552 |      0 |       |       |  
        |                                                                                                                         
                                                                                                                                  
|*  7 |      INDEX SKIP SCAN   | OS_ELEMENT_INDEX1 |      1 |    163K|    163K|00:00:00.28 |    5552 |      0 |       |       |  
        |                                                                                                                         
                                                                                                                                  
|   8 |     VIEW               | VW_DTP_BA8ECEFB    |      1 |     43M|    402K|00:00:37.39 |    1174K|   1174K|       |       |  
        |                                                                                                                         
                                                                                                                                  
|   9 |      HASH UNIQUE       |                    |      1 |     43M|    402K|00:00:37.30 |    1174K|   1174K|   113M|  9373K|  
101M (0)|                                                                                                                         
                                                                                                                                  
|* 10 |       TABLE ACCESS FULL| OS_BALANCE        |      1 |     43M|     46M|00:00:25.38 |    1174K|   1174K|       |       |  
        |                                                                                                                         
                                                                                                                                  
----------------------------------------------------------------------------------------------------------------------------------
---------                                                                                                                         
                                                                                                                                  
                                                                                                                                  
Predicate Information (identified by operation id):                                                                               

PLAN_TABLE_OUTPUT                                                                                                                 
----------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------                                                                               
                                                                                                                                  
   2 - access("ITEM_2"="T3"."EL1_CMPCODE" AND "ITEM_1"="T3"."EL1_CODE")                                                           
   4 - access("ELMLEVEL"=1)                                                                                                       
       filter("ELMLEVEL"=1)                                                                                                       
   5 - access("ITEM_2"="T2"."EL6_CMPCODE" AND "ITEM_3"="T2"."EL6_CODE")                                                           
   7 - access("ELMLEVEL"=6)                                                                                                       
       filter(("ELMLEVEL"=6 AND "CODE"<>SYS_OP_C2C(:SYS_B_2)))                                                                    
  10 - filter(("T1"."EL3"<>SYS_OP_C2C(:SYS_B_0) AND "T1"."EL4"<>SYS_OP_C2C(:SYS_B_1) AND "T1"."EL6"<>SYS_OP_C2C(:SYS_B_2)))       
                                                                                                                                  

43 rows selected.
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39380205
Фотография Sergey_Korolev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik,

2. индексы на таблицах этих покажи
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39380208
Фотография Sergey_Korolev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik,

Пришли результат

Код: sql
1.
2.
3.
4.
5.
 SELECT COUNT(DISTINCT(T1."CMPCODE")) CMPCODE,
        COUNT(DISTINCT(T1."EL6")) EL6,
        COUNT(DISTINCT(T1."EL1")) EL1,
        COUNT(DISTINCT(T1."EL1")) EL1  
  FROM "DACODB"."OS_BALANCE" T1
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39380233
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DBAshnik,

ну наконец-то, сразу многое стало понятным:
Код: 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.
117 rows selected.

PLAN_TABLE_OUTPUT                                                                                                                 
----------------------------------------------------------------------------------------------------------------------------------
SQL_ID  bs8pkhz34m1uk, child number 0                                                                                             
-------------------------------------                                                                                             
select  /*+    GATHER_PLAN_STATISTICS    leading(T2 T1 T3)                                                                        
no_merge(t2)    no_merge(t3)    use_nl(T1)    use_hash(T3)                                                                        
swap_join_inputs(T3)    index_ffs(@SEL$2 OS_ELEMENT@SEL$2                                                                         
OS_ELEMENT_INDEX1)    index_ffs(@SEL$3 OS_ELEMENT@SEL$3                                                                           
OS_ELEMENT_INDEX1)  */    distinct T1."CMPCODE" "c1"  from                                                                        
"DACODB"."OS_BALANCE" T1,      "DACODB"."OS_EL6_ELEMENT" T2,                                                                    
"DACODB"."OS_EL1_ELEMENT" T3  where T1."CMPCODE"=T2."EL6_CMPCODE" and                                                            
T1."EL6"=T2."EL6_CODE" and  T1."CMPCODE"=T3."EL1_CMPCODE" and                                                                     
T1."EL1"=T3."EL1_CODE" and       T1."EL3"<>:"SYS_B_0" and                                                                         
--:"SYS_B_09" and       T1."EL4"<>:"SYS_B_1" and -- :"SYS_B_10" and                                                               
  T2."EL6_CODE"<>:"SYS_B_2"                                                                                                       
                                                                                                                                  
Plan hash value: 825003594                                                                                                        
                                                                                                                                  
-------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation              | Name               | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |  OMem |  1Mem | Used-Mem |
-------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |                    |      1 |        |    117 |00:00:38.44 |    1186K|   1174K|       |       |          |
|   1 |  HASH UNIQUE           |                    |      1 |    119 |    117 |00:00:38.44 |    1186K|   1174K|    21M|  4264K| 1362K (0)|
|*  2 |   HASH JOIN            |                    |      1 |    250K|    402K|00:00:38.51 |    1186K|   1174K|  8988K|  3467K| 8790K (0)|
|   3 |    VIEW                | OS_EL1_ELEMENT     |      1 |    120K|    121K|00:00:00.31 |    5552 |      0 |       |       |          |
|*  4 |     INDEX SKIP SCAN    | OS_ELEMENT_INDEX1  |      1 |    120K|    121K|00:00:00.28 |    5552 |      0 |       |       |          |
|*  5 |    HASH JOIN           |                    |      1 |   2309K|    402K|00:00:37.90 |    1180K|   1174K|    12M|  3196K|   12M (0)|
|   6 |     VIEW               | OS_EL6_ELEMENT     |      1 |    163K|    163K|00:00:00.32 |    5552 |      0 |       |       |          |
|*  7 |      INDEX SKIP SCAN   | OS_ELEMENT_INDEX1  |      1 |    163K|    163K|00:00:00.28 |    5552 |      0 |       |       |          |
|   8 |     VIEW               | VW_DTP_BA8ECEFB    |      1 |     43M|    402K|00:00:37.39 |    1174K|   1174K|       |       |          |
|   9 |      HASH UNIQUE       |                    |      1 |     43M|    402K|00:00:37.30 |    1174K|   1174K|   113M|  9373K|  101M (0)|
|* 10 |       TABLE ACCESS FULL| OS_BALANCE         |      1 |     43M|     46M|00:00:25.38 |    1174K|   1174K|       |       |          |
-------------------------------------------------------------------------------------------------------------------------------------------
                                                                                                                                  
Predicate Information (identified by operation id):                                                                               
----------------------------------------------------------------------------------------------------------------------------------
                                                                                                                                  
   2 - access("ITEM_2"="T3"."EL1_CMPCODE" AND "ITEM_1"="T3"."EL1_CODE")                                                           
   4 - access("ELMLEVEL"=1)                                                                                                       
       filter("ELMLEVEL"=1)                                                                                                       
   5 - access("ITEM_2"="T2"."EL6_CMPCODE" AND "ITEM_3"="T2"."EL6_CODE")                                                           
   7 - access("ELMLEVEL"=6)                                                                                                       
       filter(("ELMLEVEL"=6 AND "CODE"<>SYS_OP_C2C(:SYS_B_2)))                                                                    
  10 - filter(("T1"."EL3"<>SYS_OP_C2C(:SYS_B_0) AND "T1"."EL4"<>SYS_OP_C2C(:SYS_B_1) AND "T1"."EL6"<>SYS_OP_C2C(:SYS_B_2)))       
                                                                                                                                  

Теперь понятно, что под условия подходят практически все записи таблицы - 46M из 51.5М и, скорее всего, возвращаются практически все возможные CMPCODE (подозреваю, что отфильтровывается всего от 2 до 5 CMPCODE). Без query rewrite в принципе это план практически оптимален, т.к. индексами тут уже не помочь и можно только оптимизировать заменой ISS на IFFS - но это не факт, что поможет т.к. индекс в кэше, а IFFS заставит читать, да и в любом случае это экономия на спичках - на них всего ~1 секунда уходит.
А вот с query rewrite можно очень хорошо оптимизнуть, думаю до 1-2 секунд:
1. надо заменить запрос с помощью query rewrite на:
1.1 если есть табличка со всеми CMPCODE (можешь глянуть есть ли внешний ключ у OS_BALANCE с CMPCODE и на какую таблицу он смотрит):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select
   cmpcode
from os_cmpcodes
where exists (
         select/*+ no_unnest no_merge leading(t2 t3 t1) use_nl(t3 t1)*/ null 
         from OS_BALANCE T1,
              OS_EL6_ELEMENT T2,
              OS_EL1_ELEMENT T3 
         where 
          os_cmpcodes = T2."EL1_CMPCODE" and
          T1."CMPCODE"=T2."EL6_CMPCODE" and T1."EL6"=T2."EL6_CODE" and  
          T1."CMPCODE"=T3."EL1_CMPCODE" and T1."EL1"=T3."EL1_CODE" and
          T1."EL3"<>'0200' and  
          T1."EL4"<>'3997' and  
          T2."EL6_CODE"<>'07777000' --:"SYS_B_11"
      )


1.2 Если нет такой таблицы, то использовать OS_EL1_ELEMENT как ведущую:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
with os_cmpcodes as (select distinct EL1_CMPCODE as cmpcode from OS_EL1_ELEMENT)
select
   cmpcode
from os_cmpcodes
where exists (
         select/*+ no_unnest no_merge leading(e1 t1 e6) use_nl(t1 e6)*/ null 
         from OS_EL1_ELEMENT e1,
              OS_EL6_ELEMENT e6,
              OS_BALANCE T1
         where
          os_cmpcodes.cmpcode = e1."EL1_CMPCODE" and
          T1."CMPCODE"=e1."EL1_CMPCODE" and T1."EL1"=e1."EL1_CODE" and
          T1."CMPCODE"=e6."EL6_CMPCODE" and T1."EL6"=e6."EL6_CODE" and
          T1."EL3"<>'0200' and
          T1."EL4"<>'3997' and
          T1."EL6"<>'07777000' --:"SYS_B_11"
      )


2. Нужен хоть какой-нибудь индекс на OS_BALANCE, в котором CMPCODE стоит первым.
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39380948
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender! Я не люблю цитировать самого себя, но 6 января 17 (16:12) я уже говорил, что:
автор"индексы все плохи ( несмотря на свежую статистику ) - прежде всего из-за низкой селективности. "(c)

авторА вот с query rewrite можно очень хорошо оптимизнуть, думаю до 1-2 секунд:
до 2х это вряд-ли, так как твой лучший вариант уже даёт 0.33 Sek примерно! :-)

Но на будущее "query rewrite" - это очень интересная опция! Правда для меня (как и других дбшников тут) это абсолютно пока на практике незнакомая штука. И даже не ясно имеем ли мы на право её юзать. Вообще-то у нас EE и в заметках там "еxtra cost option" не замечен, но с этим лицензированием фич вечно такая неразбериха!
( https://docs.oracle.com/cd/E11882_01/license.112/e47877/editions.htm#DBLIC116 )

автор(можешь глянуть есть ли внешний ключ у OS_BALANCE
нету такого.
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39380949
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik твой лучший вариант уже даёт 0.33 Sek примерно! :-)
упс. Сорри! Это я чё-то не проснулся ещё после праздников то! (и спутал с другим SQL-запросом) ;-)
33 Sek конечно же!!! )))
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39380972
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender !
твой крайний вариант "with os_cmpcodes as (select distinct EL1_CMPCODE as cmpcode from OS_EL1_ELEMENT)" летает вообще! Выполняется за одну секунду - нереально круто!!!

Но разве мне не нужно иметь mv чтобы юзать rewrite query? (сорри, ещё не вчитался как-следует в мат.часть)
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381035
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik,

можно юзать dbms_translation framework
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381054
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora601DBAshnik,

можно юзать dbms_translation framework

cпасибо! Буду изучать! Поскольку с query rewrite я вообще не понимаю, как пока это сделать! Пока что понял, что как-то так:
Код: sql
1.
SELECT /*+ REWRITE (sum_sales_pscat_week_mv) */  ...


Но думаю, что без создания mv-шек тут не обойтись. (что нам в чужой базе вообще вряд-ли позволят....) :-(
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381061
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikora601DBAshnik,

можно юзать dbms_translation framework

cпасибо! Буду изучать! Поскольку с query rewrite я вообще не понимаю, как пока это сделать! Пока что понял, что как-то так:
Код: sql
1.
SELECT /*+ REWRITE (sum_sales_pscat_week_mv) */  ...


Но думаю, что без создания mv-шек тут не обойтись. (что нам в чужой базе вообще вряд-ли позволят....) :-(


Только мне кажется я немного поторопился с ним, потому что у Вас явно что то ниже 12 с R1 ?
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381066
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora601DBAshnik,

можно юзать dbms_translation framework

у нас кстати нет такого пакета! Может он в Оракл только в 12с? ( у нас то везде 11g и в этом году 12с ещё не будет)
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381069
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, похоже только с 12с:
https://blogs.oracle.com/imc/entry/sql_translation_framework
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381073
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DBAshnik,

вот готовый пример: 15903763
Но боюсь вам придется отказаться от cursor_sharing=force для этого запроса
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381377
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderDBAshnik,

вот готовый пример: 15903763
Но боюсь вам придется отказаться от cursor_sharing=force для этого запроса

в смысле "для этого запроса"? Для всего инстанца этот параметр (в v$parameter) изменить? (ну это нам, конечно, никто не позволит!!!)

А что там с query rewrite? (там без MVs вообще никак? или есть варианты?)
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381421
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik,

это переписывание запроса, мв там не причем.
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381444
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora601DBAshnik,

это переписывание запроса, мв там не причем.

xtender написал: автор1. надо заменить запрос с помощью query rewrite на:
Опа! Ну и как это делается без м.в.????
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381510
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут есть вроде про DBMS_ADVANCED_REWRITE и cursor_sharing=
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:3696883368520#56945400346165461

а что если его только на уровне сессии пересаживать на:
Код: sql
1.
alter session set cursor_sharing=similar;


??
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381842
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решил тут поиграться (на тестовой дб) таки с QUERY REWRITE + mv (вдруг нам её таки разрешат юзать!)

создал базовую вьюху:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE MATERIALIZED VIEW DACODB.mv_ViTstMV 
ENABLE QUERY REWRITE
AS
select 
distinct T1.CMPCODE c1,   
      T1.EL1 c2,
      T2.EL6_CODE c3,
      T3.EL1_SNAME c4
from DACODB.OS_BALANCE T1, DACODB.OS_EL6_ELEMENT T2,  DACODB.OS_EL1_ELEMENT T3 
where T1.CMPCODE=T2.EL6_CMPCODE and T1.EL6=T2.EL6_CODE and  T1.CMPCODE=T3.EL1_CMPCODE and T1.EL1=T3.EL1_CODE; 



когда делаю запрос 1 в 1 один с базовым, всё летает (и, разумеется, expain plan показывает, что MV юзается!)
авторselect
distinct T1.CMPCODE c1,
T1.EL1 c2,
T2.EL6_CODE c3,
T3.EL1_SNAME c4
from DACODB.OS_BALANCE T1, DACODB.OS_EL6_ELEMENT T2, DACODB.OS_EL1_ELEMENT T3
where T1.CMPCODE=T2.EL6_CMPCODE and T1.EL6=T2.EL6_CODE and T1.CMPCODE=T3.EL1_CMPCODE and T1.EL1=T3.EL1_CODE



но стоит добавить предикат, который всего-то должен только отфильтровывать что-то из базы - как MV уже не доступна (и это видно в explain plan !)
distinct T1.CMPCODE c1,
T1.EL1 c2,
T2.EL6_CODE c3,
T3.EL1_SNAME c4
from DACODB.OS_BALANCE T1, DACODB.OS_EL6_ELEMENT T2, DACODB.OS_EL1_ELEMENT T3
where T1.CMPCODE=T2.EL6_CMPCODE and T1.EL6=T2.EL6_CODE and T1.CMPCODE=T3.EL1_CMPCODE and T1.EL1=T3.EL1_CODE
and T1.EL3<>'0200'

даже хинт не помог:
Код: sql
1.
select /*+ REWRITE(mv_ViTstMV )*/  


глупый Оракл не втыкает, что можно взять mv! Или это я глупый и что-то не знаю ещё?
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39381853
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DBAshnikora601DBAshnik,

это переписывание запроса, мв там не причем.

xtender написал: автор1. надо заменить запрос с помощью query rewrite на:
Опа! Ну и как это делается без м.в.????я же даже ссылку привёл... Не надо никаких mv.
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39382676
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender я же даже ссылку привёл... Не надо никаких mv.

xtender, cпасибо большое. Я ссылку учёл. Но ты же сам писал:
авторНо боюсь вам придется отказаться от cursor_sharing=force для этого запроса

cкорее всего нам не позволят изменить cursor_sharing даже на уровне сессии! А вот что позволят юзать не очень большие(!) MVs - на это больше шансов! Да и нам хотелось бы овладеть этой технологией, не только для решения данной проблемы, но и подобных ей в будущем (на разных _чужих_! системах!)
...
Рейтинг: 0 / 0
задачка оптимизации производительности для продвинутых :-)
    #39382678
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DBAshnik,

попробуйте создать sql_patch для этого запроса с хинтом cursor_sharing_exact: https://blogs.oracle.com/optimizer/entry/how_can_i_hint_a
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / задачка оптимизации производительности для продвинутых :-)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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