INF: Perguntas freqüentes - SQL Server 2000 - variáveis de tabela

Traduções deste artigo Traduções deste artigo
ID do artigo: 305977 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Este artigo responde algumas das perguntas mais freqüentes (FAQs) relacionadas às variáveis de tabela são introduzidas no SQL Server 2000.

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

Mais Informações

T1: Por que variáveis de tabela introduzidos quando tabelas temporárias já estavam disponíveis?

A1: Variáveis de tabela têm as seguintes vantagens sobre temporário tabelas:
  • Conforme mencionado no SQL Server Books Online "Tabelas" artigo, variáveis de tabela, como variáveis locais, têm um escopo bem definido em o fim de que eles serão limpos automaticamente.
  • Variáveis de tabela resultam em menos recompilações de um armazenado procedimento em comparação com tabelas temporárias.
  • As transações que envolvem variáveis tabela última somente para o duração de uma atualização na variável de tabela. Portanto, requerem variáveis de tabela menos de bloqueio e recursos de log. Como variáveis de tabela têm limitado o escopo e não fazem parte do banco de dados persistente, reversões de transações não afeta-los.
Q2: O que significa dizendo que variáveis de tabela resultam em menos recompilações de um procedimento armazenado que quando as tabelas temporárias são usadas?

A2: O seguinte artigo discute os motivos quando armazenadas procedimentos são recompilados:

243586 Solucionando problemas de recompilação de procedimento armazenado
As recompilações"devido a certos tabela temporária Seção de operações"também relaciona alguns requisitos para evitar tais como um recompilação devido a tabelas temporárias. Essas restrições não se aplicam a variáveis de tabela.

Variáveis de tabela são completamente isolados para o lote que não cria assim nenhuma resolução está ' precisa ocorrem quando um CREATE ou ALTER instrução é executada, que pode ocorrer com uma tabela temporária. Tabelas temporárias necessidade dessa resolução está ' armazenado uma aninhada para a tabela pode ser acessada a partir procedimento. Variáveis de tabela evitar isso ou completamente para que podem usar procedimentos armazenados plano já é compilado, economizando recursos para processar o armazenado procedimento.

3º Trimestre: Quais são algumas das desvantagens das variáveis de tabela?

A3: Estas são algumas das desvantagens em comparação com tabelas temporárias:
  • Não não possível criar índices não agrupados em variáveis de tabela que os índices do sistema que são criados para um primária e SECUNDÁRIA restrição. Que podem influenciar o desempenho de consulta quando comparado a um tabela temporária com índices não clusterizados.
  • Variáveis de tabela não mantêm estatísticas como temporário tabelas podem. As estatísticas não não possível criar variáveis de tabela por meio automático criação ou usando a instrução criar estatísticas. Portanto, para complexo consultas em tabelas grandes, a falta de estatísticas pode impedir que o optimizer determinar o melhor plano para uma consulta, afetando assim o desempenho do que consulta.
  • A definição da tabela não pode ser alterada após a inicial Instrução DECLARE.
  • Variáveis de tabelas não podem ser usados em um INSERT EXEC ou SELECT NA instrução.
  • VERIFICAR restrições, valores padrão e colunas computadas em a declaração de tipo de tabela não pode chamar funções definidas pelo usuário.
  • Você não pode usar a instrução EXEC ou o procedimento sp_executesql armazenados para executar uma consulta SQL Server dinâmica que refere-se um variável de tabela, se a variável de tabela foi criada fora a instrução EXEC ou o sp_executesql procedimento armazenado. Como variáveis de tabela podem ser referenciados em seu escopo local apenas, uma instrução EXEC e um procedimento sp_executesql armazenados estaria fora do escopo da tabela variável. No entanto, você pode criar a variável de tabela e executar todo o processamento dentro do EXEC instrução ou o sp_executesql procedimento armazenado porque então é o escopo local de variáveis de tabela a instrução EXEC ou o sp_executesql procedimento armazenado.
4º: São variáveis de tabela estruturas somente de memória que pode contar com um melhor desempenho em comparação com tabelas temporários ou permanentes, porque são mantidas em um banco de dados que reside no disco físico?

A4: Uma variável de tabela não é uma estrutura somente de memória. Como uma tabela variável poderá armazenar mais dados do que cabem na memória, ele deve ter um lugar disco para armazenar dados. Variáveis de tabela são criadas no banco de dados tempdb semelhante a tabelas temporárias. Se a memória estiver disponível, as duas variáveis de tabela e tabelas temporárias são criadas e processadas enquanto estava no memória (cache de dados).

P5: É preciso usar variáveis de tabela em vez de tabelas temporárias?

A5: A resposta depende desses três fatores:
  • O número de linhas que são inseridos para a tabela.
  • O número de recompilações que a consulta será salva de.
  • O tipo de consultas e a dependência em índices e estatísticas de desempenho.
Em algumas situações, quebrando um procedimento armazenado com temporário tabelas em menores procedimentos armazenados, de modo que recompilação ocorre no unidades menores é útil.

Em geral, você pode usar variáveis de tabela sempre que possível, exceto quando houver um volume significativo de dados e é o uso repetido da tabela. Nesse caso, você pode criar índices na tabela temporária para aumentar o desempenho da consulta. No entanto, cada cenário pode ser diferentes. A Microsoft recomenda que você teste se as variáveis de tabela são mais útil que tabelas temporárias para uma determinada consulta ou armazenado procedimento.

Propriedades

ID do artigo: 305977 - Última revisão: quinta-feira, 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 pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.
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