INF: Perguntas mais frequentes - do SQL Server 2000 - variáveis de tabela

Traduções de Artigos Traduções de Artigos
Artigo: 305977 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Este artigo responde a algumas das perguntas mais frequentes (FAQ) relacionados com as variáveis de tabela que são introduzidas no SQL Server 2000.

Para ler a descrição do SQL Server Books Online da tabela variáveis, visite o seguinte Web site da Microsoft:
aspx http://msdn2.microsoft.com/en-us/library/aa260638 (SQL.80)

Mais Informação

P1: Por que razão foram variáveis de tabela introduzidas quando tabelas temporárias já estavam disponíveis?

A1: Variáveis de tabela têm as seguintes vantagens sobre temporário tabelas:
  • Tal como mencionado no SQL Server Books Online "Tabelas" artigo, variáveis de tabela, tais como variáveis locais, têm um âmbito bem definido no o fim de que são automaticamente limpos.
  • Variáveis de tabela resultam em recompilações menos de um armazenado procedimento em comparação com as tabelas temporárias.
  • Transacções que envolvam tabela última variáveis apenas para o duração de uma actualização na variável de tabela. Por conseguinte, exigem a variáveis de tabela menos o bloqueio e registo de recursos. Uma vez que as variáveis de tabela tem limitado âmbito e não fazem parte da base de dados persistente, transacções anuladas não afecta-los.
P2: O que significa dizendo que as variáveis de tabela resultam em recompilações menos de um procedimento armazenado que quando as tabelas temporárias são utilizadas?

A2: O seguinte artigo discute algumas das razões quando armazenado procedimentos sejam novamente compilados:

243586 Resolução de problemas de recompilação do procedimento armazenado
Recompilações"devido a certas tabela temporária Secção de operações"lista também alguns requisitos para evitar tal como um recompilação da devido a tabelas temporárias. Estas restrições não se aplicam a variáveis de tabela.

Variáveis de tabela estão completamente isolados para o lote que cria por isso, não está a resolução de ' tem de ocorrer quando um CREATE ou ALTER instrução tem lugar, que pode ocorrer com uma tabela temporária. Tabelas temporárias ter esta resolução está a ' para a tabela pode ser referenciada de um aninhadas armazenados procedimento. Variáveis de tabela evitar esta situação, ou completamente para que podem utilizar procedimentos armazenados plano de que já está compilado, poupando recursos para processar o armazenados procedimento.

P3: Quais são algumas das desvantagens de variáveis de tabela?

A3: Estas são algumas das desvantagens em comparação com as tabelas temporárias:
  • Não não possível criar índices não-agrupado variáveis de tabela que os índices de sistema que são criados para um principal ou exclusivo restrição. Que podem influenciar o desempenho da consulta quando comparado com um tabela temporária com índices não-agrupados.
  • Variáveis de tabela não pretende manter estatísticas como temporária tabelas podem. Não não possível criar estatísticas variáveis de tabela através de automático criação ou utilizando a instrução de estatísticas de criar. Por conseguinte, para complexo consultas em tabelas grandes, a ausência de estatísticas pode dissuadir o Optimizador de determinar o melhor plano para uma consulta, afectando o desempenho do que consulta.
  • A definição da tabela não pode ser alterada após inicial Instrução de declaração.
  • Variáveis de tabelas não podem ser utilizados um EXEC inserir ou seleccionar INSTRUÇÃO.
  • VERIFIQUE as restrições, valores PREDEFINIDOS e colunas processadas no a declaração de tipo de tabela não é possível chamar funções definidas pelo utilizador.
  • Não é possível utilizar a instrução de execução ou o procedimento armazenado sp_executesql para executar uma consulta de SQL Server dinâmica que se refere uma variável de tabela, se a variável de tabela foi criada fora da instrução EXEC ou o sp_executesql procedimento armazenado. Porque podem ser referenciados variáveis de tabela seu local âmbito só, uma instrução "Exec" e um procedimento armazenado sp_executesql seriam fora do âmbito da tabela variável. No entanto, pode criar a variável de tabela e executar todo o processamento no interior da EXEC instrução ou o sp_executesql procedimento armazenado porque, em seguida, é o âmbito local de variáveis de tabela na demonstração de execução ou o sp_executesql procedimento armazenado.
P4: São variáveis de tabela estruturas de só de memória que são asseguradas um melhor desempenho quando comparado com tabelas temporárias ou permanentes, porque eles são mantidos numa base de dados que reside num disco físico?

A4: Uma variável de tabela não é uma estrutura de só de memória. Uma vez que uma tabela variável pode conter mais dados do que aquelas que cabem na memória, deve ter lugar no disco para armazenar dados. Variáveis de tabela são criadas na base de dados tempdb semelhante para tabelas temporárias. Se a memória estiver disponível, ambos variáveis da tabela e as tabelas temporárias são criadas e processadas enquanto num memória (cache de dados).

P5: É necessário utilizar variáveis de tabela em vez de tabelas temporárias

A5: A resposta depende destes três factores:
  • O número de linhas que são inseridos para o tabela.
  • O número de recompilações que a consulta é guardada do.
  • O tipo de consultas e respectiva dependência em índices e estatísticas de desempenho.
Em algumas situações, um procedimento armazenado com temporário de quebra tabelas em menores procedimentos armazenados para esse recompilação da tem lugar é útil para unidades mais pequenas.

Em geral, pode utiliza variáveis de tabela Sempre que possível, excepto quando existe um volume significativo de dados e não existe é a utilização repetida da tabela. Nesse caso, pode criar índices na tabela temporária para aumentar o desempenho da consulta. No entanto, cada cenário poderá diferentes. A Microsoft recomenda que teste se as variáveis de tabela são mais útil a tabelas temporárias para uma determinada consulta ou armazenados procedimento.

Propriedades

Artigo: 305977 - Última revisão: 30 de maio de 2013 - Revisão: 7.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbinfo kbmt KB305977 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 305977

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com