私の職場では、#tempテーブルの使用をやめて、代わりにSPIDを含む永続的な物理テーブルを使用する動きが進行中です。以前に#tempテーブルにINSERTしたことがある場合は常に、たとえばストアドプロシージャの先頭にある一連INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)
のDELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPID
ステートメントと共に、が必要になります。さらに、言うまでもなく、これらの「一時データを保存するための永続テーブル」が使用される場所では、を含めるように注意する必要がありますWHERE SPID = @@SPID
。
このプラクティスへの移行の背後にあるロジックは、クエリが実行されているサーバーの全体的なパフォーマンスを向上させることです(tempdbのI / Oと競合を減らすことにより)。私はいくつかの理由でこのアプローチに熱心ではありません-く、潜在的に危険であり、新しいスキームを使用するクエリのパフォーマンスを損なう可能性があるようです。
#tempテーブルを削除するためのこれまたは類似のアプローチの経験はありますか?