Atualmente, tenho visto um processo ETL em que um usuário cria tabelas que são usadas para armazenar um resultado intermediário e, em seguida, descarta as tabelas no final do processo ETL.
À primeira vista pareceu-me que esta não era a forma correcta de o fazer pois sempre tinha aprendido que isto deveria ser feito através de uma Temp Table, mas na hora de raciocinar com argumentos ao utilizador porque deveria usar tabelas temporárias de tabelas normais (que no final caem) não consegui encontrar nenhum motivo.
As tabelas temporárias em geral têm as seguintes vantagens:
O registro de operações DML neles pode ser desativado, reduzindo a carga de E/S no sistema (com o risco de perder dados neles em caso de encerramento anormal de uma transação).
Os dados em tabelas temporárias são visíveis apenas para as sessões que inseriram esses dados, mesmo que várias sessões façam referência à mesma tabela temporária global simultaneamente; cada sessão tem sua própria cópia materializada de uma tabela temporária. Isso melhora a segurança ao processar dados confidenciais.
Os dados nas tabelas temporárias são excluídos automaticamente no final da transação ou sessão, dependendo da definição da tabela, dispensando você de fazer isso manualmente. Esta operação também não é registrada (ou seja, menos E/S novamente).
Por outro lado, as tabelas temporárias têm algumas limitações funcionais em comparação com as tabelas regulares (por exemplo, alguns tipos de restrições podem não ser suportados), então você não pode usá-las se tal funcionalidade for necessária para seu processo ETL.