Um movimento está em andamento em meu local de trabalho para deixar de usar tabelas #temp e, em vez disso, usar tabelas físicas permanentes com SPIDs. Sempre que alguém insere anteriormente INTO em uma tabela #temp, agora INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)
é necessário um - junto com um monte de DELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPID
instruções no início, por exemplo, de um procedimento armazenado. Além disso, nem é preciso dizer que, em qualquer lugar em que essas 'tabelas permanentes para armazenar dados temporários' sejam usadas, é preciso ter o cuidado de incluir um arquivo WHERE SPID = @@SPID
.
A lógica por trás da mudança em direção a essa prática é que ela melhorará o desempenho geral do servidor no qual as consultas estão sendo executadas (reduzindo a E/S e a contenção em tempdb). Não gosto dessa abordagem por vários motivos - é feia, potencialmente perigosa e parece que pode prejudicar o desempenho das consultas que usam o novo esquema.
Alguém tem alguma experiência com isso ou abordagens semelhantes para eliminar tabelas #temp?