多くのテーブルの何百万ものレコードで機能するストアドプロシージャのモンスターを高速化しようとしています。
私はこれに遭遇しました: 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
上記のリンクを読んだ後、consunsusは私の@tempを一時テーブルとして使用する代わりに、その選択を行うテーブル値関数を作成しているようです。(そして、この例のような単純な選択の場合はインライン化します)しかし、実際の選択は複数であり、多くの場合単純ではありません(つまり、サブクワイアなど)。利点は何ですか?
ありがとう