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

Traduções de Artigos Traduções de Artigos
Artigo: 295037 - Ver produtos para os quais este artigo se aplica.
N.º DE BUGS: 351918 (SHILOH_BUGS)
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Consultas que utilizam mais de 20 ramos cláusula UNION ALL são executadas com uma união HASH em vez do mais eficiente INTERCALAR UNION, que faz com que utilização excessiva da memória e poderá resultar numa falha da consulta. Uma Implicação deste é que uma vista com partições distribuída em execução em 24 nós tem diferentes e menos eficientes, planos de uma vista em nós de 20.

Resolução

Para resolver este problema, obtenha o service pack mais recente do SQL Server 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211INF: How to Obtain the Latest SQL Server 2000 Service Pack

Como contornar

Utilizar uma dica de consulta união INTERCALAR irá contornar este problema. Certifique-se de que as sugestões de optimização foram exaustivamente testadas antes da colocar em produção.

Ponto Da Situação

A Microsoft confirmou que este é um problema no SQL Server 2000. Este problema foi corrigido pela primeira vez no SQL Server 2000 Service Pack 1.

Mais Informação

Passos para reproduzir o comportamento

  1. Abra uma janela no analisador de consultas.
  2. No menu de consulta , seleccione Mostrar plano de execução .
  3. Executar a consulta seguinte:
    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 no separador Plano de execução e observar os resultados.
  5. Comentário fora a seguinte linha da consulta:
    union all select orderid from orders
    					
  6. Executar a consulta editada e observe a alteração no plano no Plano de execução de separador.

Propriedades

Artigo: 295037 - Última revisão: 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 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: 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