|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
Добрый день! Есть функция, которая отрабатывает, допустим, 1 сек. Заметил что при вызове ее в селекте в конструкции case запрос отрабатывает медленнее чем если ее просто вызвать 1 раз, т.е. Код: sql 1. 2. 3. 4. 5. 6. 7.
значит ли это то что на обработку case потребуется 3 секунды (на каждый when)? и как в таком случае быстрее обработать результат функции не используя подзапрос такого вида Код: sql 1. 2. 3. 4. 5. 6.
Приму в дар любое просвещение по данной ситуации ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 07:45 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
ol_chig значит ли это то что на обработку case потребуется 3 секунды (на каждый when)? и как в таком случае быстрее обработать результат функции не используя подзапрос такого вида Функция - скалярная? Да, именно это и значит, функция будет вызвана 3 раза. Да, именно так, как Вы написали и нужно поступать: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 08:22 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
uaggster ol_chig значит ли это то что на обработку case потребуется 3 секунды (на каждый when)? и как в таком случае быстрее обработать результат функции не используя подзапрос такого вида Функция - скалярная? Да, именно это и значит, функция будет вызвана 3 раза. Да, именно так, как Вы написали и нужно поступать: Код: sql 1. 2. 3. 4. 5. 6. 7.
Да, функция скалярная. Совсем забыл про cross apply, спасибо! Это куда лучше писанины с подзапросами ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 08:39 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
ol_chig значит ли это то что на обработку case потребуется 3 секунды (на каждый when)? будет вызов 3 раза в случае, если первые 2 условия не вернут true т.е в case доходит до первого условия, которое сработает и выходит ol_chig Код: sql 1. 2. 3. 4. 5. 6.
Приму в дар любое просвещение по данной ситуации можно обойтись одним вызовом Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 09:59 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
кросс аплай вообще-то хуже подзапроса ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 16:28 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
HandKot будет вызов 3 раза в случае, если первые 2 условия не вернут true т.е в case доходит до первого условия, которое сработает и выходит Вызов 3 раза - будет независимо от того сколько и чего там будет возвращено. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 09:18 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
uaggster, нет ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 09:24 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
zby uaggster, нет Да. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 09:45 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
uaggster zby uaggster, нет Да. :-) И у вы конечно можете привести какой-либо пруф, подтверждающий ваше утверждение? Достаточно глянуть план запроса, и там почти наверняка будет 1 compute scalar с вычислением значения этой функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 10:05 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
msLex, Вот точно ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 10:07 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
zby, case так вообще не работает, еще можно поспорить на тему майскросовстовского iif ранних версий, но это уже другая тема ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2021, 10:09 |
|
Вызов функции в select внутри case как работает ?
|
|||
---|---|---|---|
#18+
uaggster HandKot будет вызов 3 раза в случае, если первые 2 условия не вернут true т.е в case доходит до первого условия, которое сработает и выходит Вызов 3 раза - будет независимо от того сколько и чего там будет возвращено. Выражение CASE (Transact-SQL) Remarks Выражение CASE последовательно оценивает свои условия и останавливается, когда находит первое выполнимое условие. В некоторых ситуациях выражение оценивается до того, как выражение CASE получает результаты выражения в качестве входных данных. При оценке этих выражений возможны ошибки. Агрегатные выражения в аргументах WHEN выражения CASE вначале оцениваются, после чего передаются выражению CASE. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 15:21 |
|
|
start [/forum/topic.php?fid=46&fpage=26&tid=1684786]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 308ms |
total: | 450ms |
0 / 0 |