Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 outer apply или update  [new]
=Сергей=
Member

Откуда:
Сообщений: 336
При обработке select, используя outer apply с табличной функцией myTableFunction.
она вызывается для каждой строки (их несколько тысяч).
select
   A.[Field1]
  ,A.[Field2]
  ,A.[Field3]
  ,B.[Field1]
  ,B.[Field2]
from myTable A
outer apply (select * from dbo.myTableFunction (A.[Field1]) B

А различных значений A.[Field1] всего пара десятков.
Как правильно сделать, чтобы функция вызывалась минимальное количество раз?

На ум приходит подобная конструкция с последующим join.
select
   A.[Field]
  ,B.[Field1]
  ,B.[Field2]
from (select distinct [Field1] from myTable) A
outer apply (select * from dbo.myTableFunction (A.[Field1]) B
25 май 16, 22:27    [19220444]     Ответить | Цитировать Сообщить модератору
 Re: outer apply или update  [new]
=Сергей=
Member

Откуда:
Сообщений: 336
ну или через Update по условию
25 май 16, 22:28    [19220450]     Ответить | Цитировать Сообщить модератору
 Re: outer apply или update  [new]
iljy
Member

Откуда:
Сообщений: 8711
=Сергей=,

нормальный вариант. Только apply можно так писать

outer apply dbo.myTableFunction (A.[Field1]) B
25 май 16, 22:31    [19220460]     Ответить | Цитировать Сообщить модератору
 Re: outer apply или update  [new]
=Сергей=
Member

Откуда:
Сообщений: 336
iljy
Только apply можно так писать
outer apply dbo.myTableFunction (A.[Field1]) B


спасибо, не знал
25 май 16, 22:59    [19220554]     Ответить | Цитировать Сообщить модератору
 Re: outer apply или update  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
может with ?
а то как там у планировщика "фишка ляжет" при join (не дай бог loop join )

with
T as
(select
A.[Field]
,B.[Field1]
,B.[Field2]
from (select distinct [Field1] from myTable) A
outer apply (select * from dbo.myTableFunction (A.[Field1]) B)

select
A.[Field1]
,A.[Field2]
,A.[Field3]
,T.[Field1]
,T.[Field2]
from myTable A
join T on T.[Field]=A.[Field1]
26 май 16, 11:43    [19222166]     Ответить | Цитировать Сообщить модератору
 Re: outer apply или update  [new]
iljy
Member

Откуда:
Сообщений: 8711
west74,

и чем в таком случае with поможет? А вообще проблемы надо решать по мере возникновения, пока для таких рассуждений маловато информации.
26 май 16, 11:49    [19222197]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить