Rafael,
As principais características:
# - Tabela temporária local. Outra sessão não consegue ver a sua tabela.
## Tabela temporária global. Todas as sessões conseguem ver e atualizar a tabela
@ - Variável do tipo table. É uma variável. Somente sua sessão consegue vê-la.
O que você citou é verdade, mas, claro, tudo depende:
Tabelas temporárias, por "baixo dos panos" são criadas fisicamente na base tempdb. Variáveis do tipo table ficam somente em memória...
E porque "depende"?? Num exemplo hipotético, se você tiver um disco SSD de altíssima performance para a sua base tempdb, disco de baixa perforamance para pagefile e 1Gb de memória (entenda como um "gargalo"
de memória), provavelmente a tabela temporária tenha melhor performance que a variável do tipo table, isso porque o sql terá que fazer swap em disco (que neste exemplo é de baixa performance, normalmente armazenado em C:) porque ele não tem memória suficiente
para manter o cache do SQL (pouca memória), mas alta performance do disco SSD na tempdb. Agora, se a situação for inversa, disco de performance baixa e 128Gb de memória, a variável do tipo table provavelmente terá melhor performance... Lembre-se também que
a quantidade de usuários criando essas estruturas e índices para ler esses dados também tem impacto sobre sua performance.
Uma dica é fazer o teste com as duas opções e ver qual tem a melhor performance.
Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008