Um movimento está em andamento no meu local de trabalho para deixar de usar #temp tables e, em vez disso, usar tabelas físicas permanentes com SPIDs. Sempre que alguém inseriu anteriormente em uma tabela #temp, agora INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)é necessário - junto com várias DELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPIDinstruções no início de, por exemplo, um procedimento armazenado. Além disso, escusado será dizer que em qualquer lugar em que essas 'tabelas permanentes para armazenamento de dados temporários' sejam usadas, é preciso ter cuidado para incluir a 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 em execução (reduzindo a E / S e a contenção em tempdb). Não gosto muito dessa abordagem por várias razões - é feia, potencialmente perigosa e parece que pode prejudicar o desempenho das consultas que usam o novo esquema.
Alguém tem alguma experiência com essa ou outras abordagens semelhantes para eliminar as tabelas #temp?