CORRECÇÃO: MERGE UNION não é usado com grande número de cláusulas UNION

Traduções deste artigo Traduções deste artigo
ID do artigo: 295037 - Exibir os produtos aos quais esse artigo se aplica.
BUG #: 351918 (SHILOH_BUGS)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Consultas que usam mais de 20 ramificações cláusula UNION ALL são executadas com uma união HASH, em vez do UNION mais eficiente de MESCLAGEM, que faz com que o uso de memória excessiva e pode resultar em falha da consulta. Uma implicação disso é que uma exibição particionada distribuída executando em 24 nós tem planos diferentes e menos eficientes, que um modo de exibição em 20 nós.

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o SQL Server 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211INF: Como obter o Service Pack mais recente do SQL Server 2000

Como Contornar

Usar uma dica de consulta UNION mesclar para contornar esse problema. Certifique-se de que as dicas de otimização foram testadas exaustivamente antes que está sendo colocado em produção.

Situação

A Microsoft confirmou que este é um problema no SQL Server 2000. Esse problema foi corrigido primeiro no SQL Server 2000 Service Pack 1.

Mais Informações

Etapas para reproduzir o problema

  1. Abra uma janela no Query Analyzer.
  2. No menu consulta , selecione Mostrar plano de execução .
  3. Executar a consulta a seguir:
    use Northwind
    go
    select top 1 * from
    (
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders 
    union all select orderid from orders
    ) xx
    order by orderid
    					
  4. Clique na guia Plano de execução e observe os resultados.
  5. Comentário sem a seguinte linha da consulta:
    union all select orderid from orders
    					
  6. Executar a consulta editada e observe a alteração no plano na guia Plano de execução .

Propriedades

ID do artigo: 295037 - Última revisão: quinta-feira, 6 de novembro de 2003 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB295037 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 295037

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