CORRECÇÃO: Uma tabela particionada pode gerar um plano de consulta ineficiente quando você executa uma consulta Transact-SQL que utiliza a cláusula TOP n em uma tabela particionada no SQL Server 2005

Traduções deste artigo Traduções deste artigo
ID do artigo: 924601 - Exibir os produtos aos quais esse artigo se aplica.
Bug #: 1253 (Hotfix do SQL)
A Microsoft distribui correções do Microsoft SQL Server 2005 como um arquivo para download. Como as correções são cumulativas, cada versão nova contém todos os hotfixes e todos os as correções de segurança que foram incluídas com o anterior SQL Server 2005 corrigir lançamento.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo descreve o seguinte sobre esta versão de hotfix:
  • Problemas corrigidos por esse pacote de hotfix
  • Os pré-requisitos para aplicar o pacote de hotfix
  • Se é necessário reiniciar o computador após aplicar o pacote de hotfix
  • Se o pacote de hotfix é substituído por qualquer outro pacote de hotfix
  • Se você deve fazer alterações de registro depois de aplicar o pacote de hotfix
  • Arquivos que estão contidos no pacote de hotfix

Sintomas

Quando você executa uma consulta Transact-SQL que utiliza a cláusula TOP n em uma tabela particionada no Microsoft SQL Server 2005, a tabela particionada pode gerar um plano de consulta ineficiente. O plano pode executar uma verificação de índice de cluster em vez de executar uma busca mais eficiente de índice não agrupado. Por exemplo, você enfrentar esse problema se as seguintes condições forem verdadeiras:
  • Executar uma consulta em uma tabela tblTest . A consulta pode ter o seguinte aspecto:
    SELECT top 1 * FROM tblTest WHERE OrderID = 'ABCDXYZ' ORDER BY OrderDateTime DESC
  • A tabela tblTest é particionada na coluna OrderDateTime .
  • Um índice de cluster é criado na coluna a OrderDateTime .
  • Um índice não agrupado é criado na coluna OrderID .
anotações
  • Ainda é realizada uma verificação de índice de cluster sem o uso de cláusula ORDER BY.
  • Quando a tabela e os índices não são particionados, um plano de pesquisa de índice não agrupado é gerado.

Causa

Esse problema ocorre porque o otimizador de consulta overestimates o custo de uso um índice de pesquisa com uma tabela particionada.

Resolução

Informações sobre o hotfix

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde a próxima atualização de software que contém esse hotfix.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior neste artigo da Base de dados de Conhecimento. Se esta seção não for exibida, contate o atendimento e suporte para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa de números de telefone de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação O formulário "Download de Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma, é porque um hotfix não está disponível para esse idioma.

Pré-requisitos

Para aplicar esse hotfix, você deve ter o SQL Server 2005 Service Pack 1 (SP1) instalado no computador. Para obter mais informações sobre como obter o SQL Server 2005 Service Pack 1, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
913089Como obter o service pack mais recente para o SQL Server 2005

Informações sobre reinicialização

Não é necessário reiniciar o computador após aplicar esse hotfix.

Informações do registro

Não é necessário alterar o registro.

Informações sobre o arquivo de hotfix

Esse hotfix contém apenas os arquivos que são necessárias para corrigir os problemas que este artigo lista. Este hotfix não pode conter de todos os arquivos que você deve ter para actualizar completamente um produto para a compilação mais recente.
A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no horário de universal coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
SQL Server 2005, versões de 32 bits x 86
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Logread.exe2005.90.2187.0398,11231 De agosto de 200619: 40x 86
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52031 De agosto de 200619: 41x 86
Microsoft.AnalysisServices.deploymentengine.dll9.0.2187.0138,01631 De agosto de 200619: 38x 86
Microsoft.AnalysisServices.dll9.0.2187.01,215,26431 De agosto de 200619: 39x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.075,55231 De agosto de 200619: 37x 86
Microsoft.SQLServer.SqlEnum.dll9.0.2187.0908,06431 De agosto de 200619: 39x 86
Msgprox.dll2005.90.2187.0197,92031 De agosto de 200619: 40x 86
Msmdlocal.dll9.0.2187.015,610,14431 De agosto de 200619: 39x 86
Msmdredir.dll9.0.2187.03,990,30431 De agosto de 200619: 40x 86
Replprov.dll2005.90.2187.0547,61631 De agosto de 200619: 41x 86
Replrec.dll2005.90.2187.0782,11231 De agosto de 200619: 39x 86
Sqlaccess.dll2005.90.2187.0347,93631 De agosto de 200619: 40x 86
Sqlagent90.exe2005.90.2187.0319,26431 De agosto de 200619: 39x 86
Sqlservr.exe2005.90.2187.028,961,11231 De agosto de 200619: 39x 86
Xpstar90.dll2005.90.2187.0292,64031 De agosto de 200619: 42x 86
Xpstar90.rll2005.90.2187.0152,86431 De agosto de 200619: 39x 86
SQL Server 2005, a versão de 64 bits
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Logread.exe2005.90.2187.0522,52801 De setembro de 200600: 06x 64
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52031 De agosto de 200619: 41x 86
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52001 De setembro de 200600: 02x 86
Microsoft.AnalysisServices.deploymentengine.dll9.0.2187.0138,01631 De agosto de 200619: 38x 86
Microsoft.AnalysisServices.dll9.0.2187.01,215,26431 De agosto de 200619: 39x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.075,55231 De agosto de 200619: 37x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.091,42401 De setembro de 200600: 03x 64
Microsoft.SQLServer.SqlEnum.dll9.0.2187.0875,29601 De setembro de 200600: 04x 86
Msgprox.dll2005.90.2187.0259,36001 De setembro de 200600: 05x 64
Msmdlocal.dll9.0.2187.015,610,14431 De agosto de 200619: 39x 86
Msmdredir.dll9.0.2187.03,990,30431 De agosto de 200619: 40x 86
Replprov.dll2005.90.2187.0745,24801 De setembro de 200600: 03x 64
Replrec.dll2005.90.2187.01,008,41601 De setembro de 200600: 04x 64
Sqlaccess.dll2005.90.2187.0355,10401 De setembro de 200600: 06x 86
Sqlagent90.exe2005.90.2187.0390,94401 De setembro de 200600: 06x 64
Sqlservr.exe2005.90.2187.039,341,85601 De setembro de 200600: 03x 64
Xpstar90.dll2005.90.2187.0540,96001 De setembro de 200600: 06x 64
Xpstar90.rll2005.90.2187.0153,37601 De setembro de 200600: 04x 64
SQL Server 2005, a versão de arquitetura Itanium
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Logread.exe2005.90.2187.01,095,45631 De agosto de 200623: 02IA-64
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52031 De agosto de 200619: 41x 86
Microsoft.AnalysisServices.AdomdClient.dll9.0.2187.0543,52031 De agosto de 200623: 01x 86
Microsoft.AnalysisServices.deploymentengine.dll9.0.2187.0138,01631 De agosto de 200619: 38x 86
Microsoft.AnalysisServices.dll9.0.2187.01,215,26431 De agosto de 200619: 39x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.075,55231 De agosto de 200619: 37x 86
Microsoft.SQLServer.mgdsqldumper.dll2005.90.2187.0163,10431 De agosto de 200623: 00IA-64
Microsoft.SQLServer.SqlEnum.dll9.0.2187.0875,29631 De agosto de 200623: 02x 86
Msgprox.dll2005.90.2187.0542,49631 De agosto de 200623: 01IA-64
Msmdlocal.dll9.0.2187.048,587,04031 De agosto de 200623: 01IA-64
Msmdredir.dll9.0.2187.06,237,47231 De agosto de 200623: 02IA-64
Replprov.dll2005.90.2187.01,617,18431 De agosto de 200623: 02IA-64
Replrec.dll2005.90.2187.02,141,47231 De agosto de 200623: 02IA-64
Sqlaccess.dll2005.90.2187.0349,47231 De agosto de 200623: 01IA-64
Sqlagent90.exe2005.90.2187.01,143,58431 De agosto de 200623: 02IA-64
Sqlservr.exe2005.90.2187.072,216,86431 De agosto de 200623: 01IA-64
Xpstar90.dll2005.90.2187.0951,07231 De agosto de 200623: 04IA-64
Xpstar90.rll2005.90.2187.0152,35231 De agosto de 200623: 02IA-64

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Para a consulta na seção "Sintomas", um plano de consulta que usa uma tabela particionada pode ser semelhante a seguinte:
SELECT top 1 * FROM tblTest WHERE ORDERID = 'AE5PL-14' ORDER BY OrderDateTime DESC
|--Top(TOP EXPRESSION:((1)))
|--Nested Loops(Inner Join, OUTER REFERENCES:([PtnIds1004]) PARTITION ID:([PtnIds1004]))
|--Constant Scan(VALUES:(((32)),((31)),((30)),((29)),((28)),((27)),((26)),((25)),((24)),((23)),((22)),((21)),((20)),((19)),((18)),((17)),((16)),
((15)),((14)),((13)),((12)),((11)),((10)),((9)),((8)),((7)),((6)),((5)),((4)),((3)),((2)),((1))))
|--Clustered Index Scan(OBJECT:([part2].[dbo].[tblTest].[IX_tblTest_RT]), WHERE:([part2].[dbo].[tblTest].[OrderID]='AE5PL-14') 
ORDERED BACKWARD 
PARTITION ID:([PtnIds1004]))
consulta plano que usa uma tabela não particionada pode ser semelhante a seguinte:
SELECT top 1 * FROM tblTest WHERE ORDERID = 'AE5PL-14' ORDER BY OrderDateTime DESC
|--Top(TOP EXPRESSION:((1)))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Uniq1002], [nonpart2].[dbo].[tblTest].[OrderDateTime], [Expr1004]) WITH 
ORDERED PREFETCH)
|--Index Seek(OBJECT:([nonpart2].[dbo].[tblTest].[IX_tblTest]), SEEK:([nonpart2].[dbo].[tblTest].[OrderID]='AE5PL-14') ORDERED 
BACKWARD)
|--Clustered Index Seek(OBJECT:([nonpart2].[dbo].[tblTest].[IX_tblTest_RT]), SEEK:([nonpart2].[dbo].[tblTest].[OrderDateTime]=
[nonpart2].[dbo].[tblTest].[OrderDateTime] AND [Uniq1002]=[Uniq1002]) LOOKUP ORDERED FORWARD)

Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software

Para obter mais informações sobre um problema relacionado, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
923849CORRECÇÃO: Quando você executa uma consulta que faz referência a uma tabela particionada no SQL Server 2005, o desempenho da consulta pode diminuir

Propriedades

ID do artigo: 924601 - Última revisão: terça-feira, 20 de novembro de 2007 - Revisão: 1.6
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
Palavras-chave: 
kbmt kbautohotfix kbfix kbexpertiseadvanced kbsql2005tsql kbhotfixserver kbqfe kbpubtypekc KB924601 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: 924601

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