powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизировать select, убрав OR
9 сообщений из 9, страница 1 из 1
Оптимизировать select, убрав OR
    #39983116
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, подскажите пожалуйста способы как можно попробовать оптимизировать запрос, в котором идет пересечение по нескольким полям, без использования OR.

Есть вью V1, в которой два ключевых кода code1 и code2.
Вторая вью V2 содержит 4 ключевых поля code1,code2,code3,code4.

Поле code1 вью v1 может равняться полю code1 вью v2.
Поле code2 вью v1 может равняться одному из трех остальных кодов вью v2. Коды code2-code4 могут быть заполнены, а могут бвть пустые.

Нужно переписать тормозящее условие

Where v1.code1=v2.code1 or v1.code2=v2.code2 or v1.code2=v2.code3 or v1.code2=v2.code4

Вариант с decode не сильно помогает.
...
Рейтинг: 0 / 0
Оптимизировать select, убрав OR
    #39983125
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

Если в code2, code3, code4 разные значения, то что ожидается на выходе?

Приведите пример данных в with и ожидаемый результат.
...
Рейтинг: 0 / 0
Оптимизировать select, убрав OR
    #39983126
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
(o-O),

оптимизировать без самих запросов, текстов вьюх и планов несколько бессмысленно...
...
Рейтинг: 0 / 0
Оптимизировать select, убрав OR
    #39983131
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

пробывать надо

1) case
2) decode(,decode())
3) union all

зы
я так понимаю индексов по code_ нет
....
stax
...
Рейтинг: 0 / 0
Оптимизировать select, убрав OR
    #39983133
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Нужно переписать тормозящее условие


Т.е. проблема не в OR как таковом, а в итоговом плане выполнения? Показывайте план, скорее всего достаточно будет запретить unnest для v2.
...
Рейтинг: 0 / 0
Оптимизировать select, убрав OR
    #39983756
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),
Код: plsql
1.
Коды code2-code4 могут быть заполнены, а могут бвть пустые.


пальцем в небо -
v1.code1=v2.code1 and v1.code2=(v2.code2 ||v2.code3 ||v2.code4)
и если ты делаешь очередное Г над другим Г, обратись к исходникам Г и напиши уже нормально.
...
Рейтинг: 0 / 0
Оптимизировать select, убрав OR
    #39983827
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Добрый день, подскажите пожалуйста способы как можно попробовать оптимизировать запрос, в котором идет пересечение по нескольким полям, без использования OR.

Есть вью V1, в которой два ключевых кода code1 и code2.
Вторая вью V2 содержит 4 ключевых поля code1,code2,code3,code4.

Поле code1 вью v1 может равняться полю code1 вью v2.
Поле code2 вью v1 может равняться одному из трех остальных кодов вью v2. Коды code2-code4 могут быть заполнены, а могут бвть пустые.

Нужно переписать тормозящее условие

Код: plsql
1.
2.
3.
4.
Where v1.code1=v2.code1
   or v1.code2=v2.code2
   or v1.code2=v2.code3
   or v1.code2=v2.code4



Вариант с decode не сильно помогает.

Код: plsql
1.
2.
3.
4.
Where (v1.code1=v2.code1
   or v1.code2=v2.code2
   or v1.code2=v2.code3
   or v1.code2=v2.code4)


Эквивалентно
Код: plsql
1.
2.
Where (v1.code1=v2.code1
   or v1.code2 IN (v2.code2, v2.code3, v2.code4))


Эквивалентно
Код: plsql
1.
2.
3.
4.
5.
Where (v1.code1, v1.code2) IN (
      (v2.code1, v1,code2), 
      (v1.code1, v2.code2), 
      (v1.code1, v2.code3), 
      (v1.code1, v2.code4))


Всё так? Не наврал?

(Просто зафиксировал преобразование, чтобы не забыть)
...
Рейтинг: 0 / 0
Оптимизировать select, убрав OR
    #39983859
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SQL*Plus,

Там or, a не and, потому запрос с in не эквивалентен
...
Рейтинг: 0 / 0
Оптимизировать select, убрав OR
    #39983860
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Не заполнены - nulls
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизировать select, убрав OR
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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