powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация запроса
40 сообщений из 40, показаны все 2 страниц
Оптимизация запроса
    #39484223
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишу вот такой вот запрос:
Код: 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.
select o.operation_id,
       o.copied_from#operation_id,
       t.operation_id,
       t.copied_from#operation_id,
       o.schedule_specifier, 
       o.is_template,        
       o.operation_type_id,  
       o.status_type_id,     
       o.created,            
       case when t.is_template    = 'Y'   then 1 
            when t.status_type_id = 90    then 1 
            when (t.is_template   = 'N'
                   and t.schedule_specifier in ('O','P')) 
                                          then 2 
            when t.operation_type_id = 40 then 2 
            when t.status_type_id = 94    then 2 
         end as flag_tamplate_auto_payment
    from operation o
         left join (select ot.operation_id
                           ,ot.operation_type_id
                           ,ot.is_template
                           ,ot.schedule_specifier
                           ,ot.status_type_id
                           ,ot.copied_from#operation_id
                           from operation ot
                           where ot.is_template = 'Y'    
                   ) t on o.copied_from#operation_id=t.operation_id
    where o.copied_from#operation_id is not null


План выполнения запроса прикреплён в картинке
По полю copied_from#operation_id уже есть индекс,
но всё равно показывает TABLE ACCESS FULL
Почему так? В чем может быть тут причина?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484228
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Статистику давно собирали?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484237
left join (...)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, а тут where ot.is_template = 'Y' индекс есть?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484241
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
left join (...)Ну, а тут where ot.is_template = 'Y' индекс есть?
Да, проглядел, признаю,
вот результаты после добавления нового индекса
Возможно ли их ещё как-то улучшить?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484261
left join (...)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для полного счастья должно быть, как минимум, 3 индекса по полям:
copied_from#operation_id
operation_id
is_template
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484263
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
left join (...)Для полного счастья должно быть, как минимум, 3 индекса по полям:

А для счастья абсолютного - по индексу на каждое поле таблицы в отдельности и на каждое сочетание.
Да?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484296
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousleft join (...)Для полного счастья должно быть, как минимум, 3 индекса по полям:

А для счастья абсолютного - по индексу на каждое поле таблицы в отдельности и на каждое сочетание.
Да?
Не ну это же не справочник ))))
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484298
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
left join (...)Для полного счастья должно быть, как минимум, 3 индекса по полям:
copied_from#operation_id
operation_id
is_template

Первый TABLE ACCESS FULL меня смущает, можно ли как-то от него избавиться? ))
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484306
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

покажи план через explain plan c filter/access predicates
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484311
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RMagistr2015 прежде чем избавляться от фулл скана подумай сколько это будет стоить? Одноблочное и многоблочное чтение не зря придумано. Это не считая расходов на вставку при наличии индексов.
По твоему вопросу какой % в operation данных у которых o.copied_from#operation_id is not null? Отсюда и ответ будет.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484333
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_PVRMagistr2015 прежде чем избавляться от фулл скана подумай сколько это будет стоить? Одноблочное и многоблочное чтение не зря придумано. Это не считая расходов на вставку при наличии индексов.
По твоему вопросу какой % в operation данных у которых o.copied_from#operation_id is not null? Отсюда и ответ будет.
25%
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484336
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Pavel_PVRMagistr2015 прежде чем избавляться от фулл скана подумай сколько это будет стоить? Одноблочное и многоблочное чтение не зря придумано. Это не считая расходов на вставку при наличии индексов.
По твоему вопросу какой % в operation данных у которых o.copied_from#operation_id is not null? Отсюда и ответ будет.
25%
25>7 => FTS
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484577
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Странно или я чтот не понял или если данные есть в t таблице а у нее is_template = 'Y' то
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
case when t.is_template    = 'Y'   then 1 
            when t.status_type_id = 90    then 1 
            when (t.is_template   = 'N'
                   and t.schedule_specifier in ('O','P')) 
                                          then 2 
            when t.operation_type_id = 40 then 2 
            when t.status_type_id = 94    then 2 
         end as flag_tamplate_auto_payment


будет срабатывать всегда верхний и на выходе будет 1 и как следствие его вообще можно убрать написав простенький decode на 1 поле, т.е. нашел данные или нет.

t.copied_from#operation_id - а не просветите по поводу знака '#' а то както раньше не всречал
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39484657
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Ок, кажется понял, copied_from#operation_id - просто спицефическое имя поля.


А не подскажите еще может ли быть к одному значению o.copied_from#operation_id несколько записей с таким t.operation_id в таблице
from operation ot where ot.is_template = 'Y') t или это связь всегда 1 к 1 и может ли быть 1 к 0?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485447
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLRMagistr2015,

Ок, кажется понял, copied_from#operation_id - просто спицефическое имя поля.


А не подскажите еще может ли быть к одному значению o.copied_from#operation_id несколько записей с таким t.operation_id в таблице
from operation ot where ot.is_template = 'Y') t или это связь всегда 1 к 1 и может ли быть 1 к 0?
Тут таблица соединяется сама с собой, для отоброжения дочерних связей, для одного operation_id может бфть много copied_from#operation_id, и условия разные, может быть как is_tempalte = 'Y' так и is_template = 'N' and t.schedule_specifier in ('O','P')
Блин, тело подзапроса привел неправильно, вот его нормальный вид:
Код: 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.
select o.operation_id,
       o.copied_from#operation_id,
       t.operation_id,
       t.copied_from#operation_id,
       o.schedule_specifier, 
       o.is_template,        
       o.operation_type_id,  
       o.status_type_id,     
       o.created,            
       case when t.is_template    = 'Y'   then 1 
            when t.status_type_id = 90    then 1 
            when (t.is_template   = 'N'
                   and t.schedule_specifier in ('O','P')) 
                                          then 2 
            when t.operation_type_id = 40 then 2 
            when t.status_type_id = 94    then 2 
         end as flag_tamplate_auto_payment
    from operation o
         left join (select ot.operation_id
                           ,ot.operation_type_id
                           ,ot.is_template
                           ,ot.schedule_specifier
                           ,ot.status_type_id
                           ,ot.copied_from#operation_id
                           from operation ot
                           where ot.is_template = 'Y'    
                           and (ot.is_template   = 'N'
                                    and ot.schedule_specifier in ('O','P'))
                           and ot.operation_type_id in (40,94)
                   ) t on o.copied_from#operation_id=t.operation_id
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485522
RMagistr2015
Код: plsql
1.
2.
3.
                           where ot.is_template = 'Y'    
                           and (ot.is_template   = 'N'
                                    and ot.schedule_specifier in ('O','P'))


И что, работает?

...зачем вообще это самосоединение надо? Аналитикой/иерархическим запросом/pattern matching не решается?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485643
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пузырь-волшебникRMagistr2015
Код: plsql
1.
2.
3.
                           where ot.is_template = 'Y'    
                           and (ot.is_template   = 'N'
                                    and ot.schedule_specifier in ('O','P'))


И что, работает?

...зачем вообще это самосоединение надо? Аналитикой/иерархическим запросом/pattern matching не решается?
Например?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485671
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,
Пример

Код: plsql
1.
2.
3.
4.
5.
6.
7.
with operation as (select 'Y' is_template, 'O' schedule_specifier from dual union all
select 'N' is_template, 'O' schedule_specifier from dual)

select ot.*
from operation ot
where ot.is_template = 'Y'    
and (ot.is_template   = 'N' and ot.schedule_specifier in ('O','P'))



no data found

Никак не работает
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485675
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLRMagistr2015,
Пример

Код: plsql
1.
2.
3.
4.
5.
6.
7.
with operation as (select 'Y' is_template, 'O' schedule_specifier from dual union all
select 'N' is_template, 'O' schedule_specifier from dual)

select ot.*
from operation ot
where ot.is_template = 'Y'    
and (ot.is_template   = 'N' and ot.schedule_specifier in ('O','P'))



no data found

Никак не работает
Простите, не совсем ясно что вы хотите сказать )
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485680
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
with operation as (select 'Y' is_template, 'O' schedule_specifier from dual union all
select 'N' is_template, 'O' schedule_specifier from dual)

select ot.*
from operation ot
where ot.is_template = 'Y'    
and (ot.is_template   = 'N' and ot.schedule_specifier in ('O','P'))



не может поле is_template быть в 2-х состояниях одновременно для одной строки.
А это значит там стоит или "or" или этот селект ничего не вернет в 100% случаев
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485682
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLRMagistr2015,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
with operation as (select 'Y' is_template, 'O' schedule_specifier from dual union all
select 'N' is_template, 'O' schedule_specifier from dual)

select ot.*
from operation ot
where ot.is_template = 'Y'    
and (ot.is_template   = 'N' and ot.schedule_specifier in ('O','P'))



не может поле is_template быть в 2-х состояниях одновременно для одной строки.
А это значит там стоит или "or" или этот селект ничего не вернет в 100% случаев
Да, вы правы, там стоит OR, пойду попью кофе (((
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485694
Запузырим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RMagistr2015там стоит OR, пойду попью кофе (((
Кофе - это хорошо.
Но еще лучше показать, как именно "там стоит OR".
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485702
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗапузыримRMagistr2015там стоит OR, пойду попью кофе (((
Кофе - это хорошо.
Но еще лучше показать, как именно "там стоит OR".
Код: 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.
select o.operation_id,
       o.copied_from#operation_id,
       t.operation_id,
       t.copied_from#operation_id,
       o.schedule_specifier, 
       o.is_template,        
       o.operation_type_id,  
       o.status_type_id,     
       o.created,            
       case when t.is_template    = 'Y'   then 1 
            when t.status_type_id = 90    then 1 
            when (t.is_template   = 'N'
                   and t.schedule_specifier in ('O','P')) 
                                          then 2 
            when t.operation_type_id = 40 then 2 
            when t.status_type_id = 94    then 2 
         end as flag_tamplate_auto_payment
    from operation o
         left join (select ot.operation_id
                           ,ot.operation_type_id
                           ,ot.is_template
                           ,ot.schedule_specifier
                           ,ot.status_type_id
                           ,ot.copied_from#operation_id
                           from operation ot
                           where ot.is_template = 'Y'    
                           OR (ot.is_template   = 'N'
                                    and ot.schedule_specifier in ('O','P'))
                           OR ot.operation_type_id in (40,94)
                   ) t on o.copied_from#operation_id=t.operation_id
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485716
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странная ошибка появилась при выполнении этого запроса. Он находится у меня в пакете в процедуре, и при вызове этой процедуры, происходит ошибка, типо нет такого пакета, хотя этого пакета среди невалидных нет. А при перекомпиляции этого пакета выходит следующее сообщение (приведено в скриншоте):
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485728
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

а это условие недокопироно?
Код: plsql
1.
    where o.copied_from#operation_id is not null


или его нет/не было вообще?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485729
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLRMagistr2015,

а это условие недокопироно?
Код: plsql
1.
    where o.copied_from#operation_id is not null


или его нет/не было вообще?
Это проверочное усовие, не обязательно, можно с ним можно буз него в рамках нашей дискуссии
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485736
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пляски с паетом продолжаются (((
пишу вот такой код:
Код: plsql
1.
2.
3.
4.
5.
6.
declare 
  i integer;
begin
  WH$S.InOper;
  --InsertOperation
end;


Он мне говорит, что мол - Невозможно найти вызываемый блок программы WH$S.InOper!
Хотя сам пакет есть, и процедура в нем то же есть, только вот при компиляции этого пакета выходит выше обозначенное окно, что это такое и почему это происходит? (((( Пол дня уже ушатал на эту фигню ((((((((((((((((
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485743
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Права напрямую?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485746
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|RMagistr2015,

Права напрямую?
Что права на прямую?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485749
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Права на выполнение WH$S даны схеме пакета напрямую, не через роль?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485750
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|RMagistr2015,

Права на выполнение WH$S даны схеме пакета напрямую, не через роль?
Не знаю, а как это можно посмотреть?
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485755
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|RMagistr2015,

Права на выполнение WH$S даны схеме пакета напрямую, не через роль?
Выполнил вот такой вот запрос -
Код: plsql
1.
2.
3.
SELECT * 
       FROM dba_objects
       where lower(object_name) = lower('WH$SYNC')


Тут показывает две стоки, в одной этот объект valid, в другой invalid (((
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485756
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015AlexFF__|RMagistr2015,

Права на выполнение WH$S даны схеме пакета напрямую, не через роль?
Выполнил вот такой вот запрос -
Код: plsql
1.
2.
3.
SELECT * 
       FROM dba_objects
       where lower(object_name) = lower('WH$SYNC')


Тут показывает две стоки, в одной этот объект valid, в другой invalid (((
Причем у этих объектов одинаковое имя, но разные ID ((((
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485757
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015RMagistr2015пропущено...

Выполнил вот такой вот запрос -
Код: plsql
1.
2.
3.
SELECT * 
       FROM dba_objects
       where lower(object_name) = lower('WH$SYNC')


Тут показывает две стоки, в одной этот объект valid, в другой invalid (((
Причем у этих объектов одинаковое имя, но разные ID ((((
Так у него говоит тело invalid, но при компиляции выдает только окно, которое я описывал выше (((( Не понятно почему так и что это за окно, и какая там ошибка (((((
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485765
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485767
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015и что это за окно, и какая там ошибка (((((Вот так и остаются инвалидами гуя.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485773
RMagistr2015при компиляции выдает только окно, которое я описывал выше (((( Не понятно почему так и что это за окно, и какая там ошибка (((((
Это окно ошибки поиска в документации описания ошибки ORA-04052.
Не надо тупо давить на "ОК" когда вылетает приглашение поискать описание кода в локальной доке, которую предварительно поленился поставить.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39485785
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опузыреть можноRMagistr2015при компиляции выдает только окно, которое я описывал выше (((( Не понятно почему так и что это за окно, и какая там ошибка (((((
Это окно ошибки поиска в документации описания ошибки ORA-04052.
Не надо тупо давить на "ОК" когда вылетает приглашение поискать описание кода в локальной доке, которую предварительно поленился поставить.
Спасибо большое, я уже понял это, Спасибо Вам большое ))
У меня нет прав что бы её туда ставить
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39486099
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Итого имеем
Код: 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.
select o.operation_id,
       o.copied_from#operation_id,
       t.operation_id,
       t.copied_from#operation_id,
       o.schedule_specifier, 
       o.is_template,        
       o.operation_type_id,  
       o.status_type_id,     
       o.created,            
       case when t.is_template    = 'Y'   then 1 
            when t.status_type_id = 90    then 1 
            when (t.is_template   = 'N'
                   and t.schedule_specifier in ('O','P')) 
                                          then 2 
            when t.operation_type_id = 40 then 2 
            when t.status_type_id = 94    then 2 
         end as flag_tamplate_auto_payment
    from operation o
         left join (select ot.operation_id
                           ,ot.operation_type_id
                           ,ot.is_template
                           ,ot.schedule_specifier
                           ,ot.status_type_id
                           ,ot.copied_from#operation_id
                           from operation ot
                           where ot.is_template = 'Y'    
                           OR (ot.is_template   = 'N'
                                    and ot.schedule_specifier in ('O','P'))
                           OR ot.operation_type_id in (40,94)
                   ) t on o.copied_from#operation_id=t.operation_id



На таблицу operation o не накладываеться ни одного условия -> Full Scan
На таблицу operation ot накладываеться одно вразумительное условие o.copied_from#operation_id=t.operation_id -> Index unique scan
По факту все красиво, остальные ускорения без данных делать сложно, т.к. не очевиден выйгрыш
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39486202
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLRMagistr2015,

Итого имеем
Код: 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.
select o.operation_id,
       o.copied_from#operation_id,
       t.operation_id,
       t.copied_from#operation_id,
       o.schedule_specifier, 
       o.is_template,        
       o.operation_type_id,  
       o.status_type_id,     
       o.created,            
       case when t.is_template    = 'Y'   then 1 
            when t.status_type_id = 90    then 1 
            when (t.is_template   = 'N'
                   and t.schedule_specifier in ('O','P')) 
                                          then 2 
            when t.operation_type_id = 40 then 2 
            when t.status_type_id = 94    then 2 
         end as flag_tamplate_auto_payment
    from operation o
         left join (select ot.operation_id
                           ,ot.operation_type_id
                           ,ot.is_template
                           ,ot.schedule_specifier
                           ,ot.status_type_id
                           ,ot.copied_from#operation_id
                           from operation ot
                           where ot.is_template = 'Y'    
                           OR (ot.is_template   = 'N'
                                    and ot.schedule_specifier in ('O','P'))
                           OR ot.operation_type_id in (40,94)
                   ) t on o.copied_from#operation_id=t.operation_id



На таблицу operation o не накладываеться ни одного условия -> Full Scan
На таблицу operation ot накладываеться одно вразумительное условие o.copied_from#operation_id=t.operation_id -> Index unique scan
По факту все красиво, остальные ускорения без данных делать сложно, т.к. не очевиден выйгрыш

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


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