Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вызов функции  [new]
Вадим2
Guest
Имеем инлайн функцию : dbo.fnApply(@a int, @b int)
И имеем функцию dbo.fn2(@var int) - скалярная.
SELECT st.id
          ,fa.value 
FROM @SomeTable st 
OUTER APPLY dbo.fnApply(st.id,  dbo.fn2(5) ) fa

В данном случае функция fn2 для каждой строки будет постоянным (как в примере 5) .
Будет ли функция fn2 вызываться для каждый раз, для каждой новой строки ?
Влияет ли на это ее детерменированность(fn2) ?
И вообще как узнать по плану запроса, где функция вызывается один раз , а где для каждой строки с учетом что для всех параметр неизменный.
Почитать бы про это.

Спасибо.
9 дек 09, 22:34    [8043592]     Ответить | Цитировать Сообщить модератору
 Re: Вызов функции  [new]
Вадим2
Guest
Понятно, что вызов dbo.fn2(5) можно вынести , сохранить в переменную и потом вызывать с ней.
Но вызов самой dbo.fnApply происходит внутри еще одной инлайн. Можно конечно СROSS JOIN .

По статистике IO : c переменной vs возов функции 2 /1904
Пo CPU time тоже 0 / 104.
9 дек 09, 22:58    [8043638]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить