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 = @@SPID
instruçõ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?