powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос в процедуре с множеством параметров.
4 сообщений из 4, страница 1 из 1
Запрос в процедуре с множеством параметров.
    #39665563
arCHi_1887
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть хп, возвращающая sys_refcursor.
И такой селект для этого курсора (fk и pk проиндексированы btw):
Код: 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.
select
  t1.<some fields>, t2.<some fields>, <etc.>
from
  table1 t1
    left outer join
  table2 t2
    on t1.pk = t2.fk
    left outer join
  table3 t3
    on t3.pk = t2.fk
   <etc. много(~10) таблиц>
where ( param1 is null
        or
        ( param1 is not null and t2.param1 like '%'||param1||'%' )
       )
  and ( param2 is null
        or
        ( param2 is not null and nvl(t2.param2, t3.param2) like '%'||param2||'%' )
       )
  and ( param3 is null
        or
        ( param3 is not null and t3.param3 like '%'||param3||'%' )
       )
  <etc. много(~15) параметров>



В таблице table1 порядка 50кк записей, в остальных, например, порядка 500к записей (в некоторых порядка 1к).
Если например, есть индекс по table3.param3 - и в хранимку будет передан только param3 - такой запрос нормально(быстро) отработает (как если бы в секции where был только param3) или нет?
Под условие обычно будут попадать порядка 0,0005% записей из table1.
...
Рейтинг: 0 / 0
Запрос в процедуре с множеством параметров.
    #39665574
arCHi_1887
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть, для случая, описанного выше - Оракл в runtime меняет запрос из 1го поста на такой (соответственно с изменением плана) или нет? :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
  t1.<some fields>, t2.<some fields>, <etc.>
from
  table1 t1
    left outer join
  table2 t2
    on t1.pk = t2.fk
    left outer join
  table3 t3
    on t3.pk = t2.fk
   <etc. много(~10) таблиц>
where  t3.param3 like '%'||param3||'%' 
...
Рейтинг: 0 / 0
Запрос в процедуре с множеством параметров.
    #39665578
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arCHi_1887,
Имхо, в такой мегапараметризованной системе не стОит полагаться на оптимизатор и делать план запроса самостоятельно.
...
Рейтинг: 0 / 0
Запрос в процедуре с множеством параметров.
    #39665583
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arCHi_1887,

Бдв. Индекс по полю табле3.парам3 для условия

табле3.парам3 Лайк '%фига-се%'

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


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