Tabelas temporárias são um grande NÃO no SQL Server.
- Eles provocam recompilações de planos de consulta que são caras.
- Criar e descartar a tabela também são operações caras que você está adicionando ao seu processo.
- Se houver uma grande quantidade de dados indo para os dados temporários, suas operações serão lentas devido à falta de índices. Você PODE criar índices em tabelas temporárias. Mas nunca recomendarei uma tabela temporária para algo com uma grande quantidade de registros.
Sua outra abordagem:criar e depois descartar tabelas regulares apenas cria a mesma sobrecarga.
Outra abordagem:usar tabelas existentes, aumentar as linhas com uma coluna adicional para diferenciar quais linhas pertencem a cada usuário/sessão que podem ser usadas. Remove o fardo de criar/descartar as tabelas mas, então, você precisará ser paranóico com o código que gera o valor para diferenciar as linhas E você terá que desenvolver uma maneira de manter a tabela para aqueles casos em que uma sessão terminou prematuramente e sobras (linhas que não foram removidas ao final do processamento).
Eu recomendo que você repense sua estratégia de processamento. Algumas alternativas são tão fáceis quanto usar consultas correlacionadas, tabelas derivadas ou variáveis de tabela. Dê uma olhada em:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx
Editar: A abordagem de criar e descartar tabelas regulares e a abordagem de reutilizar uma tabela regular aumentada com um campo adicional:Ambas gerarão recompilações de planos de consulta porque a quantidade de dados alterados acionará a reavaliação das estatísticas da tabela. Novamente, sua melhor abordagem é encontrar maneiras alternativas de processar seus dados.