|
Оптимизировать select, убрав OR
|
|||
---|---|---|---|
#18+
Добрый день, подскажите пожалуйста способы как можно попробовать оптимизировать запрос, в котором идет пересечение по нескольким полям, без использования 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 не сильно помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 14:32 |
|
Оптимизировать select, убрав OR
|
|||
---|---|---|---|
#18+
(o-O), Если в code2, code3, code4 разные значения, то что ожидается на выходе? Приведите пример данных в with и ожидаемый результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 14:49 |
|
Оптимизировать select, убрав OR
|
|||
---|---|---|---|
#18+
(o-O), оптимизировать без самих запросов, текстов вьюх и планов несколько бессмысленно... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 14:50 |
|
Оптимизировать select, убрав OR
|
|||
---|---|---|---|
#18+
(o-O), пробывать надо 1) case 2) decode(,decode()) 3) union all зы я так понимаю индексов по code_ нет .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 14:53 |
|
Оптимизировать select, убрав OR
|
|||
---|---|---|---|
#18+
(o-O) Нужно переписать тормозящее условие Т.е. проблема не в OR как таковом, а в итоговом плане выполнения? Показывайте план, скорее всего достаточно будет запретить unnest для v2. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 14:54 |
|
Оптимизировать select, убрав OR
|
|||
---|---|---|---|
#18+
(o-O), Код: plsql 1.
пальцем в небо - v1.code1=v2.code1 and v1.code2=(v2.code2 ||v2.code3 ||v2.code4) и если ты делаешь очередное Г над другим Г, обратись к исходникам Г и напиши уже нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 17:43 |
|
Оптимизировать select, убрав OR
|
|||
---|---|---|---|
#18+
(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.
Вариант с decode не сильно помогает. Код: plsql 1. 2. 3. 4.
Эквивалентно Код: plsql 1. 2.
Эквивалентно Код: plsql 1. 2. 3. 4. 5.
Всё так? Не наврал? (Просто зафиксировал преобразование, чтобы не забыть) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 22:32 |
|
Оптимизировать select, убрав OR
|
|||
---|---|---|---|
#18+
SQL*Plus, Там or, a не and, потому запрос с in не эквивалентен ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2020, 02:39 |
|
|
start [/forum/topic.php?fid=52&fpage=40&tid=1881032]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 333ms |
total: | 476ms |
0 / 0 |