Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é a diferença entre TEMPORARY TABLE e TABLE VARIABLE no SQL 2008?


As tabelas temporárias são como tabelas comuns na maioria das características, exceto que vão para o TempDB em vez do banco de dados atual e desaparecem após um escopo limitado (dependendo se são tabelas temporárias baseadas em sessão ou globais. Mas todas as alterações nos dados nas tabelas temporárias são logado no log de transações, com todas as implicações de desempenho que isso implica. otoh, você também pode adicionar quantos índices ou visualizações, ou gatilhos, ou qualquer outra coisa que você quiser em uma tabela temporária exatamente como faria em uma tabela comum.

As variáveis ​​de tabela são um tipo de tabela de atalho na memória (elas também usam temp DB). As alterações feitas neles não são registradas (isso melhora o desempenho). Mas você só pode obter um índice neles, (porque os índices não podem ser criados após a declaração de declaração inicial, o único índice que você pode criar em uma variável de tabela é aquele que pode ser incluído na declaração de variável de tabela inicial...
   Declare @Tab Table (myKey integer Primary Key Not Null, data varchar(20)) 

Devido a essas características, as tabelas temporárias são a melhor escolha para tabelas grandes (largas e com muitas linhas) e/ou que passarão por mais de um padrão de acesso durante sua vida útil, enquanto as variáveis ​​de tabela são melhores quando você precisa de uma tabela muito estreita ( keys somente tabela, ou chave com apenas uma coluna de dados), que sempre será acessada por essa chave indexada...