|
Перезаписать запрос
|
|||
---|---|---|---|
#18+
Можно ли перезаписать запрос не используя union all ? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 09:36 |
|
Перезаписать запрос
|
|||
---|---|---|---|
#18+
x17.mstu, Чтобы получить абсолютно аналогичный результат при любых значениях параметров - нет, нельзя. Результат, аналогичный исходному, если бы был использован UNION , не UNION ALL , можно получить: Код: plsql 1. 2. 3. 4. 5. 6.
При использовании UNION ALL в случае, если строка удовлетворяет условиям нескольких SELECT'ов (например, при 1 = l_loans и 1 = l_acq и выполнении других соответствующих условий) она будет выбрана больше одного раза. При переписывании запроса в один SELECT строка может быть выбрана не более одного раза (в общем случае, если речь не идёт о чисто теоретических изысканиях возможности эмулировать результат работы UNION ALL). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 12:51 |
|
Перезаписать запрос
|
|||
---|---|---|---|
#18+
ASNexus, А есть ли вообще смысл переписывать запрос от union в один select ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 13:06 |
|
Перезаписать запрос
|
|||
---|---|---|---|
#18+
Если результат разный значит смысла переписывать запрос нет ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 13:22 |
|
Перезаписать запрос
|
|||
---|---|---|---|
#18+
x17.mstu, Если критерий целесообразности переписывания запроса только один - получить аналогичный результат, то можно попробовать, например, так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Т.е. переписывание ради переписывания, не смотря ни на что (ни на производительность, ни на читаемость кода), тоже возможно конечно. Практического смысла в этом ни малейшего, но как ответ на поставленную задачу подойдёт :-) Если, я правильно догадываюсь и l_loans, l_acq, l_zp - это переменные, можно их убрать из group by, а если и версия позволяет, то можно ещё и cross join заменить на cross apply. А из каких соображений вопрос о переписывании возник изначально? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 11:21 |
|
|
start [/forum/topic.php?fid=52&fpage=29&tid=1880584]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 288ms |
total: | 425ms |
0 / 0 |