Встроенная функция по сравнению с обычным выбором - PullRequest
0 голосов
/ 19 декабря 2018

Сейчас я изучаю функции в SQL Server 2012. Я знал, что существует три типа функций.Но меня смущает Inline Table-Value Functions.

Позвольте мне объяснить.

select * into Number 
from (
 values 
  (1, 'A'),(2, 'B'),(3, 'C')
) number (N, C)

create function InlineFun (@i int)
returns table
as
return (select * from Number where n = @i)

select * from Number where n = 1
select * from InlineFun (1)

Из приведенных выше select результаты совпадают.Тогда каков точный объем Inline TVF ..?

Примечание:

Я использую Microsoft SQL Server 2012

1 Ответ

0 голосов
/ 19 декабря 2018

Думайте о ITVF как о view, в который вы можете передавать параметры.Он по существу включен в ваш скрипт, который ссылается на него, как если бы он был простым старым SQL, а затем выполнен.Вот почему они выполняются лучше, чем функции с несколькими табличными значениями, которые должны выполняться как отдельные операторы.

В связи с этим в ваших примерах оператор:

select *
from InlineFun (1)

по существупередается в механизм запросов как:

select *
from (select *
      from Number
      where n = 1
     ) as a

Таким образом, чтобы фактически ответить на ваш вопрос, область действия функции совпадает с областью оператора, который ее вызывает.

...