CORREÇÃO: O desempenho ruim quando você usa variáveis de tabela no SQL Server 2012 ou 2014 do SQL Server

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: 2952444
Sintomas
Quando você preencher uma variável de tabela com várias linhas e, em seguida, associá-lo com outras tabelas, o otimizador de consulta pode escolher um plano de consulta ineficiente, o que pode levar à consulta de desempenho lento.
Resolução
Depois de aplicar esse hotfix, você pode ativar o sinalizador de rastreamento 2453 para permitir que uma variável de tabela para acionar recompile quando um número suficiente de linhas é alterado. Isso pode permitir que o otimizador de consultas a escolher um plano mais eficiente.

O problema foi corrigido primeiro na atualização cumulativa seguinte ou / e os Service Packs do SQL Server.

Atualização cumulativa 3 para o SQL Server de 2014

Sobre atualizações cumulativas para o SQL Server

Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as mais recentes atualizações cumulativas para o SQL Server:

Service pack 2 para SQL Server 2012

Sobre os Service packs do SQL Server

Service packs são cumulativos. Cada service pack novo contém todas as correções que estão em service packs anteriores, junto com qualquer nova correção. Nossa recomendação é aplicar o service pack mais recente e a atualização cumulativa mais recente para esse service pack. Não é necessário instalar um service pack anterior antes de instalar o service pack mais recente. Use a tabela 1 para obter mais informações sobre o service pack mais recente e a atualização cumulativa mais recente no seguinte artigo:

Mais Informações
Quando você usa uma variável de tabela em um lote ou procedimento, a consulta é compilada e otimizada para o estado inicial vazio de variável de tabela. Se esta variável de tabela é preenchida com muitas linhas em tempo de execução, o plano de consulta já compilada pode não estar mais ideal. Por exemplo, a consulta pode ingressar em uma variável de tabela com loop aninhadas como é geralmente mais eficiente para um pequeno número de linhas. Este plano de consulta pode ser ineficiente se a variável de tabela possui milhões de linhas. Uma junção de hash pode ser uma escolha melhor em tal condição. Para obter um novo plano de consulta, ele precisa ser recompilado. Ao contrário de outros usuário ou tabelas temporárias, no entanto, alteração do número de linhas em uma variável de tabela não acionar uma recompilação de consulta. Normalmente, você pode contornar isso com OPTION (RECOMPILE), que possui seu próprio custo.
O sinalizador de rastreamento 2453 permite que o benefício da consulta recompile sem OPTION (RECOMPILE). O sinalizador de traço difere do OPTION (RECOMPILE) em dois aspectos principais.
(1) usa o mesmo limite de contagem de linha como outras tabelas. A consulta não precisam ser compilados para cada execução diferentemente OPTION (RECOMPILE). Ele dispararia recompile somente quando a alteração do número de linhas excede o limite predefinido.
(2) opção (RECOMPILE) força a consulta para inspecionar parâmetros e otimizar a consulta. Esse sinalizador de rastreamento não força a exibição de parâmetro.

Observação o sinalizador de traço deve estar Diante em tempo de execução. Você não pode usar o sinalizador de traço com QUERYTRACEON. Esse sinalizador de rastreamento deve ser usado com cuidado porque ela pode aumentar o número de recompilações de consulta que pode custar mais do que economia de melhor otimização da consulta.
Situação
A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 2952444 - Última Revisão: 02/22/2016 07:05:00 - Revisão: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2952444 KbMtpt
Comentários