|
Параметризованный фильтр или OR
|
|||
---|---|---|---|
#18+
Други, помогите, пожалуйста, как реализовать выборку... Я постараюсь показать на грубом примере, но в моем случае выборка очень большая по количеству записей и полей. Обусловлено бизнесом и сузить выборку не предоставляется возможным. Однако, есть направления по бизнесу, которые могут позволить делать выгрузку либо по одному направления, либо по другому. Итак, есть таблица: Код: sql 1.
и есть условия выборки, нужно отобрать данные, где 1. данные выборки удовлетворяют условию фильтра 2. данные выборки не удовлетворяют условию выборки 3. все иными словами, я хочу параметризовать то, что сейчас отбирается так: 1. Код: sql 1.
2. Код: sql 1.
3. Код: sql 1.
таким образом, в случаях 1. выбираются все (условно) договора, которые удовлетворяют условию, что направление договоров = @param 2. выбираются все другие договора, где направление любые, кроме @param 3. выбираются договора все. Таким образом я написал запрос: Код: sql 1. 2. 3. 4.
где ID собственно идентификатор из справочника того самого направления. И вся беда в том, что такой запрос стал работать непомерно дольше и я понимаю, что проблема в OR , но как ее решить, что-то не могу дать ладу. Подскажи всезнающий all, чего я не так наворотил? Мне это виделось так, что я мог бы задавать значения параметру @param , и было бы щастье. Спасибо огромное в диктанте три-четыре варнинга, но в общем компилируется ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 22:15 |
|
Параметризованный фильтр или OR
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
Либо Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 22:27 |
|
Параметризованный фильтр или OR
|
|||
---|---|---|---|
#18+
invm, Код: sql 1.
Спасибо огромное В чем фокус? Union не красивы скрипт. Очень громоздкий код и без него, а с ним в три этажа... не айс ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2020, 22:33 |
|
Параметризованный фильтр или OR
|
|||
---|---|---|---|
#18+
SHKoder В чем фокус? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2020, 00:46 |
|
Параметризованный фильтр или OR
|
|||
---|---|---|---|
#18+
alexeyvg Сервер переделывает запрос (строит план запроса) для конкретных значений параметров Тогда я понимаю, что эту опцию правильно использовать для любого параметризованного запроса? О Боги! Чему нас только в школе учили? А хотя нас учили достаточно давно. Однако, правильно ли использовать опцию в каждом запросе, где есть более одного параметра по структуре OR? Для запроса типа Код: sql 1. 2. 3. 4. 5.
очевидно нет необходимости?? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2020, 00:56 |
|
Параметризованный фильтр или OR
|
|||
---|---|---|---|
#18+
SHKoder alexeyvgСервер переделывает запрос (строит план запроса) для конкретных значений параметров Тогда я понимаю, что эту опцию правильно использовать для любого параметризованного запроса?Нет, потому что тогда серверу придётся каждый раз перестраивать план, что увеличивает расход ЦПУ ,и время выполнения. Вариант с UNION будет выполняться всегда быстро, а recompile можно ставить для сложных, но редко выполняющихся запросов, или для очень простых (что бы перестроение плана было быстрым). SHKoder Для запроса типа Код: sql 1. 2. 3. 4. 5.
очевидно нет необходимости?? Для простого запроса и правильных индексов recompile точно вреден. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2020, 01:03 |
|
Параметризованный фильтр или OR
|
|||
---|---|---|---|
#18+
SHKoder, а так, что получается? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2020, 01:27 |
|
Параметризованный фильтр или OR
|
|||
---|---|---|---|
#18+
nullin, Друг, у меня остался только один патрон... Раньше я думал, что потрачу его на хромую лошадь, но я ошибался... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2020, 01:30 |
|
|
start [/forum/topic.php?fid=46&fpage=62&tid=1686224]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 131ms |
0 / 0 |