Quais são os benefícios (se houver) de descartar uma tabela temporária no SQL Server?
por exemplo:
DROP TABLE #temp;
Como as tabelas temporárias são descartadas automaticamente pelo servidor, essa instrução parece não funcionar.
Quais são os benefícios (se houver) de descartar uma tabela temporária no SQL Server?
por exemplo:
DROP TABLE #temp;
Como as tabelas temporárias são descartadas automaticamente pelo servidor, essa instrução parece não funcionar.
Normalmente, descarto tabelas #temp explicitamente apenas por hábito (gosto de limpar tudo o que crio). Existe um mito de que descartar uma tabela #temp explicitamente impedirá o cache e a reutilização da tabela #temp, mas isso não é verdade: consulte esta postagem no blog de @PaulWhite para obter mais detalhes, e esta para ainda mais.
#temp
as tabelas que são criadas em um escopo filho (Procedure, Trigger,EXEC
-ed SQL) são descartadas automaticamente quando o escopo termina.Mas aqueles em
@@NESTLEVEL
0 só são descartados automaticamente quando a sessão termina. Eles permanecem por vários lotes.Portanto, para essas consultas ad hoc, é essencial eliminá-las (especialmente se elas puderem ser executadas várias vezes ou se um lote posterior criar um com o mesmo nome).
Colando o seguinte em uma nova janela de consulta no SSMS
Falhará na segunda execução com
Você está dizendo explicitamente ao servidor para remover as referências à
#temp
tabela. Se a#temp
tabela estiver usando muitos recursos, por exemplo, atempdb
execuçãoDROP TABLE #temp
pode reduzir o consumo de recursos antes do final da sessão.Você pode querer descartar a tabela para garantir que ela não seja usada erroneamente depois que seus dados forem invalidados.
Não há motivo para executar esta operação em uma consulta ou procedimento armazenado, a menos que você planeje usar o mesmo nome de tabela temporária posteriormente na sessão. No entanto, neste caso, um novo nome pode ser usado conforme apropriado para a nova funcionalidade.