powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ускорил запрос, но уменьшилась "читабельность"
5 сообщений из 5, страница 1 из 1
Ускорил запрос, но уменьшилась "читабельность"
    #40060679
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня в пакете есть курсор, ввёл его для избавления кода от копи-паста довольно большого запроса с минимальным изменением. Но проблема, время открытия было катастрофически большое: решил уменьшить.

Что бы можно было курсор использовать для разных задач, есть параметр для ограничения списка: либо вся таблица, либо только одна строка с определённым ID

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
   CURSOR CURSOR_CheckCustomers(..., AOnlyID in integer := NULL) 
   IS  
   SELECT 
      customer.ID  -- PRIMARY KEY
   FROM 
      customer
   WHERE
      (
         AOnlyID is NULL or
         customer.ID = AOnlyID
      ) and
      ...
      ...



Oracle на такой мой запрос ответил полным игнорированием PRIMARY KEY индекса, всегда делая FULL SCAN таблицы "customer"

Условие я переписал и индекс теперь подтягивается, скорость открытия резко подскочила, но потерялась "читабельность" на мой взгляд. Теперь больше времени требуется, что бы понять SQL.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   CURSOR CURSOR_CheckCustomers(..., AOnlyID in integer := NULL) 
   IS  
   SELECT 
      customer.ID
   FROM 
      customer
   WHERE
      customer.ID = nvl(AOnlyID, customer.ID) and
      ...
      ...




Жаль, что оптимизатор (9.2) не понял паттерн использования в 1-ом варианте.
Просто бурчание вслух
...
Рейтинг: 0 / 0
Ускорил запрос, но уменьшилась "читабельность"
    #40060691
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кроик Семён,

Обновляйтесь и не бурчите :)
...
Рейтинг: 0 / 0
Ускорил запрос, но уменьшилась "читабельность"
    #40060732
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sayan Malakshinov,

Sayan MalakshinovОбновляйтесь и не бурчите :)
А каким образом тут обновление поможет? Concatenation и в 9.2 есть. OR-Expansion с таким запросом, в общем случае, не поможет. Фиксировать план в любом случае придеться для ":bind is null or column=:bind".
...
Рейтинг: 0 / 0
Ускорил запрос, но уменьшилась "читабельность"
    #40060745
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeaGate
А каким образом тут обновление поможет? Concatenation и в 9.2 есть.
Кому интересно, кроме замшелого ТС, вспоминать, что могло (не)работать в замшелых версиях?
Если замшелость - это его выбор, то ему с ним жить самому.
...
Рейтинг: 0 / 0
Ускорил запрос, но уменьшилась "читабельность"
    #40060800
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SeaGate
Concatenation и в 9.2 есть
в 9.2 не было параметра OR_PREDICATES у use_concat, так что concatenation не форсировать для оригинального запроса без nvl ¯\_(ツ)_/¯


SeaGate
Фиксировать план в любом случае придеться для ":bind is null or column=:bind".
оптимизатор может сам выбрать выбрать or_expansion если подправить расчет стоимости для такого плана - я уже говорил с Найджелом из команды оптимизатора по поводу этого года три назад, обещали посмотреть, но сомневаюсь, что решат в ближайшем будущем... Вкратце, проблема в том, что при or_expand или use_concat их стоимость складывается из стоимостей развернутых вариантов, а так как, как минимум одна из веток будет такой же по стоимости, что и не no_expand/no_or_expand, то, соответственно, выбраны они не будут.
Т.е. проблема именно в том, что оптимизатор тупо складывает стоимости, хотя фактически в простейшем случае работать будет только одна из веток, и, по идее, нужен был бы какой-нибудь коэффициент на это. Скажем 0.5-0.8 .
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ускорил запрос, но уменьшилась "читабельность"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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