Я пытаюсь ускорить своего монстра хранимой процедуры, которая работает с миллионами записей во многих таблицах.
Я наткнулся на это: Можно ли использовать хранимую процедуру в качестве подзапроса в SQL Server 2008?
Мой вопрос заключается в том, почему использование табличной функции лучше, чем использование временной таблицы.
Предположим, моя хранимая процедура @SP1
declare @temp table(a int)
insert into @temp
select a from BigTable
where someRecords like 'blue%'
update AnotherBigTable
set someRecords = 'were blue'
from AnotherBigTable t
inner join
@temp
on t.RecordID = @temp.a
После прочтения приведенной выше ссылки кажется, что консенсус заключается в том, чтобы вместо использования моей @temp в качестве временной таблицы создать табличную функцию, которая будет выполнять этот выбор. (и встроить его, если это простой выбор, как у меня в этом примере). Но мои фактические выборы множественны и часто не просты (например, с подзапросами и т. д.). В чем преимущество?
Спасибо