Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
Добрый день, товарищи.
прошу помочь: при разработке представления подставляю хинт DRIVING_SITE? чтобы передать датасет из моей выборки по линку, но по неведомой причине, он не подхватывается, и селект тупо умирает:

with f1 as (select 2852790524 card_no, 0 pos_no from dual 
            union all
    			select 0 card_no, 2852789040 pos_no  from dual)
select  /*+ DRIVING_SITE(CC_AGREEMENT) */
	a1.CREATED_DIVN_CODE
from 
  f1,
  CC_AGREEMENT@SIEBEL a1
where a1.AGREE_NO = f1.POS_NO



что делаю не так?
11 сен 18, 17:35    [21671258]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1271
wolfio,

/*+ DRIVING_SITE(a1) */

.....
stax
11 сен 18, 17:40    [21671265]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28207
wolfio
что делаю не так?
RTFM tablespec (FAQ)
11 сен 18, 17:40    [21671267]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
Прошу прощения за изменений условий на ходу.
Запрос в финале меняется вот на такой:

with f1 as (select 2852790524 card_no, 0 pos_no from dual 
            union all
    			select 0 card_no, 2852789040 pos_no  from dual)
select  /*+ DRIVING_SITE(a1) */
	a1.CREATED_DIVN_CODE
from 
  f1,
  CC_AGREEMENT@SIEBELV8_SS3.WORLD a1
  ,CC_CARDS@SIEBEL a2
where f1.POS_NO = a1.AGREE_NO(+)
and f1.card_No = a2.agree_no(+)


Возможно ли в таком случае подставить 2 алиаса?
Если нет, как можно поступить?
11 сен 18, 17:48    [21671275]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16677
wolfio
Возможно ли в таком случае подставить 2 алиаса?

Куда подставить 2 алиаса? Для зачем?
Запрос должен отрабатывать под чутким руководством SQL-машины одного из сайтов, которая будет координатором и раздаст работу прочим участникам, ибо одна голова хорошо, а две - змей Горыныч.
DRIVING_SITE не "передает датасеты", но подсказывает оракелям, кто из них должен стать главным.

wolfio
Если нет, как можно поступить?

Можно забить на линки в пользу ETL-инструментов.
11 сен 18, 17:57    [21671291]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1271
wolfio

Возможно ли в таком случае подставить 2 алиаса?
Если нет, как можно поступить?


Как заставить Oracle использовать хинт /*+DRIVING_SITE() */ ???

.....
stax
11 сен 18, 17:57    [21671294]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
andrey_anonymous
Можно забить на линки в пользу ETL-инструментов.

можно чуть подробнее?
11 сен 18, 18:09    [21671311]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16677
wolfio
andrey_anonymous
Можно забить на линки в пользу ETL-инструментов.

можно чуть подробнее?

https://www.guru99.com/top-20-etl-database-warehousing-tools.html
11 сен 18, 18:21    [21671324]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9045
wolfio
Если нет, как можно поступить?


Выкинуть код. Зачем лезть в A2 если мы его left джойним и ничего из A2 не берем.

SY.
11 сен 18, 18:21    [21671325]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
Maxim Demenko
Member

Откуда: Munich, Germany
Сообщений: 885
SY,

если a2.agree_no не уникально, то может размножить строки, играет ли это роль в данном случае для ТС - судить не могу .

Regards

Maxim
11 сен 18, 21:52    [21671543]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
Коллеги, почему в такой реализации запрос зависает?

F1 имеет лишь 17 тыс записей, и выгружается относительно быстро.
select  /*+ DRIVING_SITE(a2) */
	case
   	when f1.CARDS_NUM_DOG is null then
      	'['||a1.CREATED_DIVN_CODE||'] '||a1.CREATED_DIVN_NAME 
      when f1.POS_NUM_DOG is null then
      	'['||a2.CREATED_DIVN_CODE||'] '||a2.CREATED_DIVN_NAME      
   end kko_num,f1.*
from 
  (
   SELECT 
   a1.ID ID, 'KB_RECORD' Class_Id
   ,case c1.C_OBJ_CLASS when 'R2_LOAN' then case when  exists (
            select  null A$1
            from Z#R2_KIND_CRED w2, Z#R2_LOAN w1
            where w1.C_KIND_CREDIT=w2.id
              and (w1.ID = c1.C_OBJ_REF and w2.C_PROJECT_TYPE in (20980020383,64082360170))
         ) then null when  exists (
            select  null A$1
            from Z#R2_KIND_CRED x2, Z#R2_LOAN x1
            where x1.C_KIND_CREDIT=x2.id
              and (x1.ID = c1.C_OBJ_REF and x2.C_PROJECT_TYPE in (37890375184,35099557598))
         ) then (
            select  y1.C_NUM_DOG 
            from Z#R2_LOAN y1 
            where y1.ID = c1.C_OBJ_REF 
            and not REGEXP_LIKE(y1.C_NUM_DOG,'[A-z|А-я||\/]') and ROWNUM < 2
         ) 
   end end CARDS_NUM_DOG
   ,case c1.C_OBJ_CLASS when 'R2_LOAN' then case when  exists (
            select  null A$1
            from Z#R2_KIND_CRED w2, Z#R2_LOAN w1
            where w1.C_KIND_CREDIT=w2.id
              and (w1.ID = c1.C_OBJ_REF and w2.C_PROJECT_TYPE in (20980020383,64082360170))
         ) then null 
         when  exists (
            select  null A$1
            from Z#R2_KIND_CRED x2, Z#R2_LOAN x1
            where x1.C_KIND_CREDIT=x2.id
              and (x1.ID = c1.C_OBJ_REF and x2.C_PROJECT_TYPE in (37890375184,35099557598))
         ) then null 
         else (
            select  aa1.C_NUM_DOG 
            from Z#R2_LOAN aa1 
            where aa1.ID = c1.C_OBJ_REF 
            and not REGEXP_LIKE(aa1.C_NUM_DOG,'[A-z|А-я||\/]') and ROWNUM < 2 
            and not  exists (select  null A$1
                             from Z#R2_DEP_LOAN_CON ac1
                             where ac1.C_LOAN = c1.C_OBJ_REF)
         ) 
   end end POS_NUM_DOG      
         from Z#KB_MESSAGE d3, Z#COM_STATUS_PRD d2, Z#KB_BIND_RECORDS d1, Z#KB_HISTORY_SUBJ c1, Z#KB_HISTORY_SUBJ b1, Z#KB_RECORD a1
         where a1.COLLECTION_ID is NULL and d1.C_STATUS=d2.id(+) and d1.C_MESSAGE_REF=d3.id(+)
           and d1.C_RECORD_REF = a1.ID and a1.C_PROD = c1.ID(+) and a1.C_CLIENT = b1.ID(+) 
           and d1.C_MESSAGE_REF = 208859378929
           and not  exists (
            select  1 A$1
            from Z#KB_MESSAGE f1, Z#KB_BIND_RECORDS e1
            where e1.C_RECORD_REF = d1.C_RECORD_REF and e1.C_MESSAGE_REF = f1.ID and f1.C_UBKI_MESSAGE_REF = d1.C_MESSAGE_REF
         )
   ) f1,
  CC_AGREEMENT@SIEBELV8_SS3.WORLD a1,
  CC_CARD@SIEBELV8_SS3.WORLD a2 
where 1=1
and f1.POS_NUM_DOG = a1.AGREE_NO(+)
and f1.CARDS_NUM_DOG = a2.agree_no(+)
12 сен 18, 09:24    [21671750]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 581
wolfio,

А Вы его точно сами писали?
А то у меня много вопросов к ТАКОМУ селекту
12 сен 18, 11:33    [21671885]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
MaximaXXL,

задавайте
12 сен 18, 14:52    [21672262]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 581
wolfio,

1. /*+ DRIVING_SITE(a2) */ - Вы выгружаете данные f1 (17к по Вашим словам) и CC_CARD@SIEBELV8_SS3.WORLD - все на CC_AGREEMENT ... Вы думаете это обоснованно? может отойти от left Join и перейти к подзапросам в select?

2. Действительно не можете это сделать одним проходом?
  ,case c1.C_OBJ_CLASS when 'R2_LOAN' then
                               case when  exists (select  null A$1
                                                    from Z#R2_KIND_CRED w2, Z#R2_LOAN w1
                                                   where w1.C_KIND_CREDIT=w2.id
                                                     and (w1.ID = c1.C_OBJ_REF and w2.C_PROJECT_TYPE in (20980020383,64082360170)))
                                        then null 
                                    when  exists (select  null A$1
                                                    from Z#R2_KIND_CRED x2, Z#R2_LOAN x1
                                                   where x1.C_KIND_CREDIT=x2.id
                                                     and (x1.ID = c1.C_OBJ_REF and x2.C_PROJECT_TYPE in (37890375184,35099557598)))
                                        then null 
                                    else (select  aa1.C_NUM_DOG 
                                            from Z#R2_LOAN aa1 
                                           where aa1.ID = c1.C_OBJ_REF 
                                             and not REGEXP_LIKE(aa1.C_NUM_DOG,'[A-z|А-я||\/]') and ROWNUM < 2 
                                             and not exists (select  null A$1
                                                               from Z#R2_DEP_LOAN_CON ac1
                                                              where ac1.C_LOAN = c1.C_OBJ_REF))
                               end                              
    end POS_NUM_DOG  


3. Вам реально надо эти таблицы? Задвоить (если они для этого) можно и после выполнения подзапросов.
from Z#KB_MESSAGE d3, Z#COM_STATUS_PRD d2, Z#KB_BIND_RECORDS d1, Z#KB_HISTORY_SUBJ c1, Z#KB_HISTORY_SUBJ b1, Z#KB_RECORD a1
         where a1.COLLECTION_ID is NULL and d1.C_STATUS=d2.id(+) and d1.C_MESSAGE_REF=d3.id(+)
           and d1.C_RECORD_REF = a1.ID and a1.C_PROD = c1.ID(+) and a1.C_CLIENT = b1.ID(+) 
           and d1.C_MESSAGE_REF = 208859378929
           and not  exists (
            select  1 A$1
            from Z#KB_MESSAGE f1, Z#KB_BIND_RECORDS e1
            where e1.C_RECORD_REF = d1.C_RECORD_REF and e1.C_MESSAGE_REF = f1.ID and f1.C_UBKI_MESSAGE_REF = d1.C_MESSAGE_REF
         )
12 сен 18, 15:23    [21672311]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
MaximaXXL,

1. подзапросы в селекте как раз и породили гемор с этим вопросом. CC_CARD и CC_AGREEMENT имеет около 100 миллионов записей, и обращение в подзапросе раздельно по каждой строке просто не отработает до вселенной смерти.

2. если вы про эстетику, то да, конечно возможно обернуть парой скобок и выкрутить логику в обратную сторону, чтобы избавиться от лишних экзистов, но по факту ускорения это не даст. Такое ветвление вызвано тем, что изначально источник данных для CC_CARD и CC_AGREEMENT это и есть одна эта колонка. Ее пришлось разбить просто для связки.

3. как я уже сказал, внутренний подзапрос (f1) отрабатывает приемлемо быстро. Можно конечно же, поиграться с освобождением содержимого и выиграть доли секунд по скорости, но по факту, вся проблема упирается в связку через ДБ-линк. я потому и упростил запрос максимально, чтобы убедиться, что это не я туплю с использованием хинта, а система. По факту у меня умирает даже этот запрос:

select  /*+ DRIVING_SITE(a2) */
	a1.CREATED_DIVN_CODE
from 
  (select 2852790524 card_no, 0 pos_no from dual 
            union all
    select 0 card_no, 2852789040 pos_no  from dual)f1,
  CC_AGREEMENT@SIEBELV8_SS3.WORLD a1
  ,CC_CARD@SIEBELV8_SS3.WORLD a2
where f1.POS_NO = a1.AGREE_NO(+)
and f1.card_No = a2.agree_no(+)




зы. вы так забавно реагируете на гавнокод, что боюсь, что если покажу вам полное продуктовое представление, вы сильно разочаруетесь.
Забавы ради, план этого маленького запроса указанного выше:
+
 Plan Hash Value  : 

---------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost | Time |
---------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT REMOTE | | 2 | 98 | 2895390 | 00:53:52 |
| * 1 | HASH JOIN OUTER | | 2 | 98 | 2895390 | 00:53:52 |
| 2 | NESTED LOOPS OUTER | | 2 | 86 | 5 | 00:00:01 |
| 3 | VIEW | | 2 | 20 | 4 | 00:00:01 |
| 4 | UNION-ALL | | | | | |
| 5 | REMOTE | DUAL | 1 | | 2 | 00:00:01 |
| 6 | REMOTE | DUAL | 1 | | 2 | 00:00:01 |
| 7 | VIEW PUSHED PREDICATE | CC_AGREEMENT | 1 | 33 | 1 | 00:00:01 |
| 8 | NESTED LOOPS OUTER | | 1 | 774 | 201 | 00:00:01 |
| 9 | NESTED LOOPS OUTER | | 1 | 742 | 200 | 00:00:01 |
| 10 | MERGE JOIN CARTESIAN | | 1 | 710 | 199 | 00:00:01 |
| 11 | MERGE JOIN CARTESIAN | | 1 | 710 | 198 | 00:00:01 |
| 12 | MERGE JOIN CARTESIAN | | 1 | 676 | 197 | 00:00:01 |
| * 13 | HASH JOIN OUTER | | 1 | 642 | 196 | 00:00:01 |
| 14 | NESTED LOOPS OUTER | | 1 | 598 | 194 | 00:00:01 |
| 15 | NESTED LOOPS OUTER | | 1 | 555 | 25 | 00:00:01 |
| 16 | NESTED LOOPS OUTER | | 1 | 544 | 24 | 00:00:01 |
| 17 | NESTED LOOPS OUTER | | 1 | 533 | 23 | 00:00:01 |
| 18 | NESTED LOOPS OUTER | | 1 | 496 | 22 | 00:00:01 |
| 19 | NESTED LOOPS OUTER | | 1 | 459 | 21 | 00:00:01 |
| 20 | NESTED LOOPS OUTER | | 1 | 448 | 20 | 00:00:01 |
| 21 | NESTED LOOPS OUTER | | 1 | 433 | 19 | 00:00:01 |
| 22 | NESTED LOOPS OUTER | | 1 | 395 | 18 | 00:00:01 |
| 23 | NESTED LOOPS OUTER | | 1 | 357 | 17 | 00:00:01 |
| 24 | NESTED LOOPS OUTER | | 1 | 346 | 16 | 00:00:01 |
| 25 | NESTED LOOPS OUTER | | 1 | 335 | 15 | 00:00:01 |
| 26 | NESTED LOOPS OUTER | | 1 | 320 | 14 | 00:00:01 |
| 27 | NESTED LOOPS OUTER | | 1 | 309 | 13 | 00:00:01 |
| 28 | NESTED LOOPS OUTER | | 1 | 296 | 12 | 00:00:01 |
| 29 | NESTED LOOPS OUTER | | 1 | 283 | 11 | 00:00:01 |
| 30 | NESTED LOOPS OUTER | | 1 | 263 | 10 | 00:00:01 |
| 31 | NESTED LOOPS OUTER | | 1 | 252 | 9 | 00:00:01 |
| 32 | NESTED LOOPS OUTER | | 1 | 239 | 8 | 00:00:01 |
| 33 | NESTED LOOPS OUTER | | 1 | 228 | 7 | 00:00:01 |
| 34 | NESTED LOOPS OUTER | | 1 | 217 | 6 | 00:00:01 |
| 35 | NESTED LOOPS | | 1 | 204 | 5 | 00:00:01 |
| 36 | NESTED LOOPS | | 1 | 190 | 4 | 00:00:01 |
| 37 | NESTED LOOPS OUTER | | 1 | 166 | 3 | 00:00:01 |
| 38 | NESTED LOOPS OUTER | | 1 | 102 | 2 | 00:00:01 |
| * 39 | TABLE ACCESS BY INDEX ROWID | S_DOC_AGREE | 1 | 91 | 1 | 00:00:01 |
| * 40 | INDEX RANGE SCAN | S_DOC_AGREE_ABS_X | 1 | | 1 | 00:00:01 |
| * 41 | INDEX UNIQUE SCAN | S_ORG_EXT_P1 | 1 | 11 | 1 | 00:00:01 |
| 42 | TABLE ACCESS BY INDEX ROWID | CX_S_DOC_AGREE_X | 1 | 64 | 1 | 00:00:01 |
| * 43 | INDEX RANGE SCAN | CX_S_DOC_AGREEX_U1 | 1 | | 1 | 00:00:01 |
| * 44 | INDEX RANGE SCAN | S_PROD_INT_M59 | 1 | 24 | 1 | 00:00:01 |
| * 45 | INDEX RANGE SCAN | S_PROD_INT_X_U1 | 1 | | 1 | 00:00:01 |
| 46 | TABLE ACCESS BY GLOBAL INDEX ROWID | S_ASSET | 1 | 13 | 1 | 00:00:01 |
| * 47 | INDEX UNIQUE SCAN | S_ASSET_P1 | 1 | | 1 | 00:00:01 |
| * 48 | INDEX RANGE SCAN | S_ASSET_X_U1 | 1 | 11 | 1 | 00:00:01 |
| * 49 | INDEX UNIQUE SCAN | S_ORG_EXT_P1 | 1 | 11 | 1 | 00:00:01 |
| 50 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT_X | 1 | 13 | 1 | 00:00:01 |
| * 51 | INDEX RANGE SCAN | S_ORG_EXT_X_U1 | 1 | | 1 | 00:00:01 |
| * 52 | INDEX RANGE SCAN | S_ORG_EXT_X_U1 | 1 | 11 | 1 | 00:00:01 |
| 53 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT | 1 | 20 | 1 | 00:00:01 |
| * 54 | INDEX UNIQUE SCAN | S_ORG_EXT_P1 | 1 | | 1 | 00:00:01 |
| 55 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT_X | 1 | 13 | 1 | 00:00:01 |
| * 56 | INDEX RANGE SCAN | S_ORG_EXT_X_U1 | 1 | | 1 | 00:00:01 |
| 57 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT_X | 1 | 13 | 1 | 00:00:01 |
| * 58 | INDEX RANGE SCAN | S_ORG_EXT_X_U1 | 1 | | 1 | 00:00:01 |
| * 59 | INDEX UNIQUE SCAN | S_ORG_EXT_P1 | 1 | 11 | 1 | 00:00:01 |
| 60 | TABLE ACCESS BY INDEX ROWID | S_ORG_EXT_X | 1 | 15 | 1 | 00:00:01 |
| * 61 | INDEX RANGE SCAN | S_ORG_EXT_X_U1 | 1 | | 1 | 00:00:01 |
| * 62 | INDEX UNIQUE SCAN | S_ORG_EXT_P1 | 1 | 11 | 1 | 00:00:01 |
| * 63 | INDEX RANGE SCAN | S_ORG_EXT_X_U1 | 1 | 11 | 1 | 00:00:01 |
| * 64 | TABLE ACCESS BY INDEX ROWID | S_LST_OF_VAL | 1 | 38 | 1 | 00:00:01 |
| * 65 | INDEX RANGE SCAN | S_LST_OF_VAL_U1 | 1 | | 1 | 00:00:01 |
| * 66 | TABLE ACCESS BY INDEX ROWID | S_LST_OF_VAL | 1 | 38 | 1 | 00:00:01 |
| * 67 | INDEX RANGE SCAN | S_LST_OF_VAL_U1 | 1 | | 1 | 00:00:01 |
| 68 | TABLE ACCESS BY GLOBAL INDEX ROWID | S_ASSET | 1 | 15 | 1 | 00:00:01 |
| * 69 | INDEX UNIQUE SCAN | S_ASSET_P1 | 1 | | 1 | 00:00:01 |
| * 70 | INDEX UNIQUE SCAN | S_ASSET_P1 | 1 | 11 | 1 | 00:00:01 |
| * 71 | TABLE ACCESS BY INDEX ROWID | S_LST_OF_VAL | 1 | 37 | 1 | 00:00:01 |
| * 72 | INDEX RANGE SCAN | S_LST_OF_VAL_U2 | 1 | | 1 | 00:00:01 |
| * 73 | TABLE ACCESS BY INDEX ROWID | S_LST_OF_VAL | 1 | 37 | 1 | 00:00:01 |
| * 74 | INDEX RANGE SCAN | S_LST_OF_VAL_U2 | 1 | | 1 | 00:00:01 |
| * 75 | INDEX UNIQUE SCAN | S_OPTY_P1 | 1 | 11 | 1 | 00:00:01 |
| * 76 | INDEX UNIQUE SCAN | S_OPTY_X_P1 | 1 | 11 | 1 | 00:00:01 |
| * 77 | VIEW PUSHED PREDICATE | | 1 | 43 | 169 | 00:00:01 |
| 78 | NESTED LOOPS OUTER | | 1 | 116 | 169 | 00:00:01 |
| 79 | NESTED LOOPS OUTER | | 1 | 83 | 3 | 00:00:01 |
| 80 | NESTED LOOPS OUTER | | 1 | 41 | 2 | 00:00:01 |
| 81 | TABLE ACCESS BY INDEX ROWID | S_DOC_AGREE | 1 | 29 | 1 | 00:00:01 |
| * 82 | INDEX UNIQUE SCAN | S_DOC_AGREE_P1 | 1 | | 1 | 00:00:01 |
| 83 | TABLE ACCESS BY INDEX ROWID | CX_S_DOC_AGREE_X | 1 | 12 | 1 | 00:00:01 |
| * 84 | INDEX UNIQUE SCAN | CX_S_DOC_AGREEX_P1 | 1 | | 1 | 00:00:01 |
| * 85 | TABLE ACCESS BY INDEX ROWID | CX_OPTY_SERV | 1 | 42 | 1 | 00:00:01 |
| * 86 | INDEX RANGE SCAN | CX_OPTY_SERV_AGREE_ID | 1 | | 1 | 00:00:01 |
| * 87 | TABLE ACCESS BY INDEX ROWID | S_LST_OF_VAL | 1 | 33 | 166 | 00:00:01 |
| * 88 | INDEX SKIP SCAN | S_LST_OF_VAL_U1 | 29096 | | 6 | 00:00:01 |
| 89 | VIEW | | 1 | 44 | 2 | 00:00:01 |
| 90 | NESTED LOOPS | | 1 | 71 | 2 | 00:00:01 |
| 91 | NESTED LOOPS | | 1 | 71 | 2 | 00:00:01 |
| * 92 | TABLE ACCESS BY INDEX ROWID | S_LST_OF_VAL | 1 | 40 | 1 | 00:00:01 |
| * 93 | INDEX RANGE SCAN | S_LST_OF_VAL_U1 | 6 | | 1 | 00:00:01 |
| * 94 | INDEX UNIQUE SCAN | S_LST_OF_VAL_P1 | 1 | | 1 | 00:00:01 |
| * 95 | TABLE ACCESS BY INDEX ROWID | S_LST_OF_VAL | 1 | 31 | 1 | 00:00:01 |
| 96 | BUFFER SORT | | 1 | 34 | 197 | 00:00:01 |
| * 97 | INDEX RANGE SCAN | CX_CONSTANT_X1 | 1 | 34 | 1 | 00:00:01 |
| 98 | BUFFER SORT | | 1 | 34 | 197 | 00:00:01 |
| * 99 | INDEX RANGE SCAN | CX_CONSTANT_X1 | 1 | 34 | 1 | 00:00:01 |
| 100 | BUFFER SORT | | 1 | | 198 | 00:00:01 |
| 101 | VIEW | | 1 | | 1 | 00:00:01 |
| * 102 | COUNT STOPKEY | | | | | |
| 103 | INDEX FULL SCAN | CX_INN_MFO_P1 | 1 | | 1 | 00:00:01 |
| * 104 | TABLE ACCESS BY INDEX ROWID | CX_OPTY_SERV | 1 | 32 | 1 | 00:00:01 |
| * 105 | INDEX RANGE SCAN | CX_OPTY_SERV_AGREE_ID | 1 | | 1 | 00:00:01 |
| * 106 | TABLE ACCESS BY INDEX ROWID | CX_OPTY_SERV | 1 | 32 | 1 | 00:00:01 |
| * 107 | INDEX RANGE SCAN | CX_OPTY_SERV_AGREE_ID | 1 | | 1 | 00:00:01 |
| 108 | VIEW | CC_CARD | 26146929 | 156881574 | 2894418 | 00:53:51 |
| * 109 | HASH JOIN RIGHT OUTER | | 26146929 | 6066087528 | 2894418 | 00:53:51 |
| 110 | INDEX FULL SCAN | S_PROD_INT_X_U1 | 3651 | 36510 | 1 | 00:00:01 |
| * 111 | HASH JOIN RIGHT OUTER | | 26146929 | 5804618238 | 2893450 | 00:53:50 |
| 112 | INDEX FULL SCAN | S_ASSET_X_U1 | 99197327 | 1289565251 | 4374 | 00:00:05 |
| * 113 | HASH JOIN RIGHT OUTER | | 26136521 | 5462532889 | 2489984 | 00:46:19 |
| 114 | INDEX FULL SCAN | S_ORG_EXT_X_U1 | 912606 | 10038666 | 51 | 00:00:01 |
| * 115 | HASH JOIN RIGHT OUTER | | 26085428 | 5164914744 | 2227091 | 00:41:26 |
| 116 | INDEX FULL SCAN | S_ORG_EXT_X_U1 | 912606 | 10038666 | 51 | 00:00:01 |
| * 117 | HASH JOIN RIGHT OUTER | | 26034435 | 4868439345 | 1978295 | 00:36:48 |
| 118 | INDEX FULL SCAN | S_ASSET_P1 | 98564115 | 1084205265 | 4567 | 00:00:06 |
| 119 | NESTED LOOPS OUTER | | 26034435 | 4582060560 | 1626607 | 00:30:16 |
| * 120 | HASH JOIN RIGHT OUTER | | 26034435 | 4295681775 | 1608664 | 00:29:56 |
| 121 | INDEX FULL SCAN | S_ORG_EXT_P1 | 944534 | 10389874 | 47 | 00:00:01 |
| * 122 | HASH JOIN RIGHT OUTER | | 26034435 | 4009302990 | 1400592 | 00:26:04 |
| 123 | INDEX FULL SCAN | S_ORG_EXT_P1 | 944534 | 10389874 | 47 | 00:00:01 |
| 124 | NESTED LOOPS OUTER | | 26034435 | 3722924205 | 1206107 | 00:22:27 |
| 125 | NESTED LOOPS OUTER | | 26034435 | 3462579855 | 1205964 | 00:22:26 |
| * 126 | HASH JOIN RIGHT OUTER | | 26034435 | 2291030280 | 422342 | 00:07:52 |
| 127 | INDEX FULL SCAN | CX_S_DOC_AGREEX_P1 | 70393000 | 703930000 | 3102 | 00:00:04 |
| 128 | NESTED LOOPS OUTER | | 26020438 | 2029594164 | 228851 | 00:04:16 |
| * 129 | HASH JOIN OUTER | | 26020438 | 1743369346 | 223295 | 00:04:10 |
| 130 | PARTITION LIST SINGLE | | 26020438 | 1457144528 | 18516 | 00:00:21 |
| 131 | TABLE ACCESS BY LOCAL INDEX ROWID | S_ASSET | 26020438 | 1457144528 | 18516 | 00:00:21 |
| * 132 | INDEX RANGE SCAN | S_ASSET_X6_X | 7076452 | | 1506 | 00:00:02 |
| 133 | INDEX FULL SCAN | S_ASSET_P1 | 98564115 | 1084205265 | 4567 | 00:00:06 |
| * 134 | INDEX UNIQUE SCAN | S_ORG_EXT_U3 | 1 | 11 | 1 | 00:00:01 |
| 135 | TABLE ACCESS BY INDEX ROWID | S_DOC_AGREE | 1 | 45 | 1 | 00:00:01 |
| * 136 | INDEX UNIQUE SCAN | S_DOC_AGREE_P1 | 1 | | 1 | 00:00:01 |
| * 137 | INDEX UNIQUE SCAN | S_PROD_INT_P1 | 1 | 10 | 1 | 00:00:01 |
| * 138 | INDEX UNIQUE SCAN | S_ASSET_X_P1 | 1 | 11 | 1 | 00:00:01 |
---------------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - access("A3"."CARD_NO"="A1"."AGREE_NO"(+))
* 13 - access("LOV_COND"."NAME"(+)="AGREE"."ISB_CONDITION_CHANGE_RATE" AND "LOV_COND"."PAR_VALUE"(+)="AGREE"."LOV_COND_PARENT")
* 39 - filter("AGR"."X_ISB_PRODUCT_ID" IS NOT NULL AND ("AGR"."X_ISB_SALES_METHOD_NAME"='Карты' OR "AGR"."X_ISB_SALES_METHOD_NAME"='Кредит на карту' OR "AGR"."X_ISB_SALES_METHOD_NAME"='Нецелевой
кредит' OR "AGR"."X_ISB_SALES_METHOD_NAME"='Потребительский кредит'))
* 40 - access("AGR"."X_ABS_AGREEMENT_ID"="A3"."POS_NO")
* 41 - access("EX_KKO"."ROW_ID"(+)="AGR"."X_ISB_RFS_ID")
* 43 - access("AGR_X"."PAR_ROW_ID"(+)="AGR"."ROW_ID")
* 44 - access("PI"."ROW_ID"="AGR"."X_ISB_PRODUCT_ID")
* 45 - access("PIX"."PAR_ROW_ID"="PI"."ROW_ID")
* 47 - access("FA"."ROW_ID"(+)="AGR"."FN_ACCNT_ID")
* 48 - access("FA_X"."PAR_ROW_ID"(+)="FA"."ROW_ID")
* 49 - access("OE"."ROW_ID"(+)="FA"."BILL_ACCNT_ID")
* 51 - access("KKOX"."PAR_ROW_ID"(+)="EX_KKO"."ROW_ID")
* 52 - access("OEX"."PAR_ROW_ID"(+)="OE"."ROW_ID")
* 54 - access("OE_TT"."ROW_ID"(+)="AGR"."X_ISB_BASIC_ID")
* 56 - access("BASX"."PAR_ROW_ID"(+)="OE_TT"."ROW_ID")
* 58 - access("OE_TT_X"."PAR_ROW_ID"(+)="OE_TT"."ROW_ID")
* 59 - access("OE_TO"."ROW_ID"(+)="OE_TT"."PAR_DIVN_ID")
* 61 - access("OE_TO_X"."PAR_ROW_ID"(+)="OE_TO"."ROW_ID")
* 62 - access("OE_F"."ROW_ID"(+)="OE_TT_X"."ISB_FILIAL_TO_ID")
* 63 - access("OE_F_X"."PAR_ROW_ID"(+)="OE_F"."ROW_ID")
* 64 - filter("LOV_TYPE_CALC"."ACTIVE_FLG"(+)='Y')
* 65 - access("LOV_TYPE_CALC"."TYPE"(+)='ISB_TYPE_CALCULATIONS' AND "LOV_TYPE_CALC"."VAL"(+)="OE_TO_X"."ISB_TYPE_CALCULATIONS" AND "LOV_TYPE_CALC"."LANG_ID"(+)='RUS')
* 66 - filter("LOV_YN"."ACTIVE_FLG"(+)='Y')
* 67 - access("LOV_YN"."TYPE"(+)='ISB_YES_NO' AND "LOV_YN"."VAL"(+)="OE_TO_X"."ISB_SINGLE_CONTRACT" AND "LOV_YN"."LANG_ID"(+)='RUS')
* 69 - access("CARD"."ROW_ID"(+)="AGR"."X_CARD_ID")
* 70 - access("CARD_ACC"."ROW_ID"(+)="CARD"."X_ISB_FIN_ACCOUNT_ID")
* 71 - filter("LOV_SPEC_RATE_TYPE"."ACTIVE_FLG"(+)='Y')
* 72 - access("LOV_SPEC_RATE_TYPE"."TYPE"(+)='ISB_CONSUMER_RETURN_RATE_TYPE' AND "LOV_SPEC_RATE_TYPE"."NAME"(+)="AGR_X"."PROD_SPEC_RATE_TYPE" AND "LOV_SPEC_RATE_TYPE"."LANG_ID"(+)='RUS')
* 73 - filter("LOV_SPEC_RATE_CODE"."ACTIVE_FLG"(+)='Y')
* 74 - access("LOV_SPEC_RATE_CODE"."TYPE"(+)='ISB_CONSUMER_RETURN_RATE_CODE' AND "LOV_SPEC_RATE_CODE"."NAME"(+)="AGR_X"."PROD_SPEC_RATE_BASE" AND "LOV_SPEC_RATE_CODE"."LANG_ID"(+)='RUS')
* 75 - access("O"."ROW_ID"(+)="AGR"."OPTY_ID")
* 76 - access("OX"."ROW_ID"(+)="O"."ROW_ID")
* 77 - filter("AGREE"."ROW_ID"(+)="AGR"."ROW_ID")
* 82 - access("T3"."ROW_ID"="AGR"."ROW_ID")
* 84 - access("T4"."ROW_ID"(+)="AGR"."ROW_ID")
* 84 - filter("T3"."ROW_ID"="T4"."ROW_ID"(+))
* 85 - filter("T5"."STATUS"(+)='Connected' AND ("T5"."NAME"(+)='LIGHT_CREDIT' OR "T5"."NAME"(+)='MULTIRATE'))
* 86 - access("T5"."AGREE_ID"(+)="AGR"."ROW_ID")
* 86 - filter("T3"."ROW_ID"="T5"."AGREE_ID"(+))
* 87 - filter("T6"."ACTIVE_FLG"(+)='Y' AND "T6"."NAME"(+)="T5"."NAME")
* 88 - access("T6"."LANG_ID"(+)='RUS')
* 88 - filter("T6"."LANG_ID"(+)='RUS')
* 92 - filter("T1"."PAR_ROW_ID" IS NOT NULL AND "T1"."ACTIVE_FLG"='Y')
* 93 - access("T1"."TYPE"='ISB_RATE_CHANGE_CONDITION' AND "T1"."LANG_ID"='RUS')
* 93 - filter("T1"."LANG_ID"='RUS')
* 94 - access("T2"."ROW_ID"="T1"."PAR_ROW_ID")
* 95 - filter("T2"."LANG_ID"='RUS' AND "T2"."ACTIVE_FLG"='Y')
* 97 - access("T"."TYPE"='CC_AGREEMENT' AND "T"."NAME"='ISB CC_Agreement BKI Pos')
* 99 - access("T"."TYPE"='CC_AGREEMENT' AND "T"."NAME"='ISB CC_Agreement BKI Cards')
* 102 - filter(ROWNUM<2)
* 104 - filter("SERV"."STATUS"(+)='Connected' AND "SERV"."NAME"(+)='LIGHT_CREDIT')
* 105 - access("SERV"."AGREE_ID"(+)="AGR"."ROW_ID")
* 105 - filter("SERV"."AGREE_ID"(+) IS NOT NULL)
* 106 - filter("SERV_MR"."NAME"(+)='MULTIRATE' AND "SERV_MR"."STATUS"(+)='Connected')
* 107 - access("SERV_MR"."AGREE_ID"(+)="AGR"."ROW_ID")
* 107 - filter("SERV_MR"."AGREE_ID"(+) IS NOT NULL)
* 109 - access("PROD"."ROW_ID"="PRX"."PAR_ROW_ID"(+))
* 111 - access("AX"."PAR_ROW_ID"(+)="A"."ROW_ID")
* 113 - access("EX_KKO"."ROW_ID"="KKOX"."PAR_ROW_ID"(+))
* 115 - access("OE_TT"."ROW_ID"="BASX"."PAR_ROW_ID"(+))
* 117 - access("A"."PAR_ASSET_ID"="PAR_S"."ROW_ID"(+))
* 120 - access("D"."X_ISB_BASIC_ID"="OE_TT"."ROW_ID"(+))
* 122 - access("D"."X_ISB_RFS_ID"="EX_KKO"."ROW_ID"(+))
* 126 - access("A"."CUR_AGREE_ID"="DX"."ROW_ID"(+))
* 129 - access("A"."X_ISB_FIN_ACCOUNT_ID"="S"."ROW_ID"(+))
* 132 - access("A"."TYPE_CD"='ATM Card')
* 134 - access("OE"."PAR_ROW_ID"(+)="A"."BILL_ACCNT_ID")
* 136 - access("A"."CUR_AGREE_ID"="D"."ROW_ID"(+))
* 137 - access("D"."X_ISB_PRODUCT_ID"="PROD"."ROW_ID"(+))
* 138 - access("A"."PAR_ASSET_ID"="PAR_SX"."ROW_ID"(+))
12 сен 18, 15:48    [21672359]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 581
wolfio,

Коректировка:

/*+ DRIVING_SITE(a2) */ - это отправка данных F1 и CC_AGREEMENT@SIEBELV8_SS3.WORLD a1 на источник CC_CARD.
НО в Вашем запросе a2 начинает работать ТОЛЬКО когда данные в f1.POS_NUM_DOG is null а f1.CARDS_NUM_DOG is not null, а каков процент таких ситуаций? т.е. первая проверка стоит f1.CARDS_NUM_DOG is null и вывод данных начнеться с CC_AGREEMENT@SIEBELV8_SS3.WORLD a1, и как следствие данных на вывод из CC_CARD@SIEBELV8_SS3.WORLD a2 может не быть вообще. Тогда зачем гнать ВСЕ данные на тот сервер где самая малая вероятность получения данных напрямую.

Может и витьевато излагаю, но по приоритетам a2 имеет самый малый приоритет и гнать туда данные не вижу смысла (как-то так)

З.ы. DRIVING_SITE(a2) - указание выполнять этот запрос на сервере CC_CARD, т.е. F1 и a1 будут работать по линкам
12 сен 18, 15:53    [21672365]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
MaximaXXL,

ну как я понял из доки, и это подтвердил оратор выше - датасеты не гонятся туда. Передается лишь хинт, что удаленная машина главная.
Кроме того, я как раз и хотел бы узнать о возможном анализе ораклом этого хинта - увидит ли он, что и а1 и а2 являются источниками на одном хосте? Можно ли сделать так, чтобы он это понял?

про null однозначно не могу сказать, но вероятнсть, что данных из cc_agreement не будет вообще крайне мала.
12 сен 18, 16:08    [21672408]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1271
wolfio,

а если разделить
select  /*+ DRIVING_SITE(a1) */
	a1.CREATED_DIVN_CODE
from 
         ( select  f1.*  /*+ DRIVING_SITE(a2) NO_MERGE */
           from
             (select 2852790524 card_no, 0 pos_no from dual 
              union all
              select 0 card_no, 2852789040 pos_no  from dual)f1
            ,CC_CARD@SIEBELV8_SS3.WORLD a2
where f1.POS_NO = a2.AGREE_NO(+)
) ff1
 ,CC_AGREEMENT@SIEBELV8_SS3.WORLD a1
where ff1.card_No = a1.agree_no(+)


.....
stax
12 сен 18, 16:40    [21672468]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 581
Stax,

Там похоже в другом трабла, CC_CARD и CC_AGREEMENT это вьюхи и когда переносят работу на их сервак они становятся лидирующие, а это не совсем правильно с точки зрения получения данных. Может там LEADING или ORDERED нужен.
12 сен 18, 16:47    [21672480]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
Stax
wolfio,

а если разделить
.....
stax

не помогло

MaximaXXL, вероятно, да, но я пробовал подставить ORDERED хинт, и эффекта не было. хз даже что тут еще можно предпринять.
12 сен 18, 17:19    [21672522]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1271
wolfio,

если запрос/сы выполнять "локально" на удаленных сайтах (без @ххх), то быстро?

мож вьюхи сами по себе тяжелые

.....
stax
12 сен 18, 17:27    [21672536]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
wolfio
Member

Откуда: город дорог
Сообщений: 113
Stax,

да, вьюхи реально тяжелые. И при прямом указании agree_no = '123456' отрабатывает за 1-1.5 сек по 1 записи.
Но вопрос то в том, почему за те же 10 секунд по 2 записям не отрабатывает даже в элементарном примере.. Т.е. тяжесть вьюх этим фактом немного облегчается :)
12 сен 18, 17:42    [21672553]     Ответить | Цитировать Сообщить модератору
 Re: DRIVING_SITE - не подхватывает хинт  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1271
wolfio,

если по отдельности (CC_AGREEMENT,CC_CARD) быстро,

 select  *  
           from
             (select 2852790524 card_no, 0 pos_no from dual 
              union all
              select 0 card_no, 2852789040 pos_no  from dual)f1
            ,CC_CARD@SIEBELV8_SS3.WORLD a2
where f1.POS_NO = a2.AGREE_NO(+)


то пробовать как-то соеденять, надо домучить
напр

select * from 
  (select hint * from dual,CC_CARD@SIEBELV8_SS3 ...) v1
 ,(select hint * from dual,CC_AGREEMENT@SIEBELV8_SS3 ...) v2
where v2...=v1...


....
stax
12 сен 18, 17:55    [21672564]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить