CORRECÇÃO: Algumas consultas que têm uma associação externa à esquerda e um filtro IS NULL executadas mais lentamente depois de instalar correcções posteriores ao SP3 de SQL Server 2000

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

Nesta página

Sintomas

Uma consulta pode executada mais lentamente Microsoft SQL Server 2000 pós-SP3 correcção compilação 8.00.0776 ou posterior quando comparado com consultas que executar contra SQL Server 2000 antes de correcção compilação 8.00.0776, se as seguintes condições forem verdadeiras:
  • A consulta envolve uma associação externa à esquerda das duas tabelas. No exemplo seguinte, tabela 1 é a tabela da esquerda e tabela 2 é a tabela para a direita.
  • Existe uma condição de filtro IS NULL numa coluna para a tabela para a direita (tabela 2).
  • As colunas unir têm diferentes tipos de dados. Uma coluna é do tipo char/varchar e a coluna é do tipo nvarchar/nchar .
  • Muito poucas das linhas do resultado da consulta satisfazem a condição ON de associação externa.
Por exemplo, uma consulta que contém a seguinte condição de associação e filtro pode executar mais lenta:
t1 left outer join t2 on t1.c1 = t2.c1 where t2.c1 is null --t1.c1 is of type nvarchar and t2.c1 is of type varchar

Causa

Este problema ocorre porque o optimizador do SQL Server underestimates o número de linhas que satisfaça a condição de filtro IS NULL após a associação.

Como contornar

Para contornar este problema, certifique-se de que as colunas unir são do mesmo tipo de dados.

Resolução

Informações sobre Service Packs

Para resolver este problema, obtenha o service pack mais recente do Microsoft 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:
290211Como obter o SQL Server 2000 service pack mais recente

Informações sobre a correcção

A versão inglesa desta correcção tem os atributos de ficheiro (ou posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas no formato de universal hora (UTC) coordenada Coordinated. Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------------
   31-May-2003  16:45  2000.80.818.0      78,400  Console.exe      
   28-Oct-2003  02:21  2000.80.873.0     315,968  Custtask.dll     
   02-Oct-2003  18:59  2000.80.867.0      33,340  Dbmslpcn.dll     
   25-Apr-2003  00:12                    786,432  Distmdl.ldf
   25-Apr-2003  00:12                  2,359,296  Distmdl.mdf
   29-Jan-2003  23:55                        180  Drop_repl_hotfix.sql
   12-Sep-2003  01:26  2000.80.859.0   1,905,216  Dtspkg.dll       
   26-Aug-2003  18:16  2000.80.854.0     528,960  Dtspump.dll      
   23-Jun-2003  20:40  2000.80.837.0   1,557,052  Dtsui.dll        
   23-Jun-2003  20:40  2000.80.837.0     639,552  Dtswiz.dll       
   24-Apr-2003  00:51                    747,927  Instdist.sql
   02-May-2003  23:56                      1,581  Inst_repl_hotfix.sql
   08-Feb-2003  04:40  2000.80.765.0      90,692  Msgprox.dll      
   01-Apr-2003  00:07                      1,873  Odsole.sql
   04-Apr-2003  23:46  2000.80.800.0      62,024  Odsole70.dll     
   07-May-2003  18:41  2000.80.819.0      25,144  Opends60.dll     
   02-Apr-2003  19:48  2000.80.796.0      57,904  Osql.exe         
   02-Apr-2003  21:15  2000.80.797.0     279,104  Pfutil80.dll     
   04-Aug-2003  16:17                    550,780  Procsyst.sql
   11-Sep-2003  22:37                     12,305  Qfe469315.sql
   22-May-2003  20:57                     19,195  Qfe469571.sql
   05-Sep-2003  23:36                  1,090,932  Replmerg.sql
   06-Sep-2003  05:18  2000.80.858.0     221,768  Replprov.dll     
   06-Sep-2003  05:18  2000.80.858.0     307,784  Replrec.dll      
   05-Sep-2003  22:00                  1,087,150  Replsys.sql
   13-Aug-2003  14:28                    986,603  Repltran.sql
   21-Oct-2003  22:08  2000.80.871.0      57,916  Semnt.dll        
   29-Jul-2003  18:13  2000.80.819.0     492,096  Semobj.dll       
   31-May-2003  16:27  2000.80.818.0     172,032  Semobj.rll
   05-Aug-2003  19:06                    127,884  Sp3_serv_uni.sql
   31-May-2003  23:01  2000.80.818.0   4,215,360  Sqldmo.dll       
   07-Apr-2003  15:44                     25,172  Sqldumper.exe    
   19-Mar-2003  16:20  2000.80.789.0      28,672  Sqlevn70.rll
   27-Sep-2003  02:42  2000.80.865.0     180,792  Sqlmap70.dll     
   03-Sep-2003  00:56  2000.80.857.0     188,992  Sqlmmc.dll       
   02-Sep-2003  21:03  2000.80.857.0     479,232  Sqlmmc.rll
   21-Oct-2003  22:08  2000.80.871.0     401,984  Sqlqry.dll       
   08-Feb-2003  04:40  2000.80.765.0      57,920  Sqlrepss.dll     
   28-Oct-2003  02:21  2000.80.873.0   7,606,353  Sqlservr.exe     
   25-Jul-2003  19:44  2000.80.845.0     590,396  Sqlsort.dll      
   08-Feb-2003  04:40  2000.80.765.0      45,644  Sqlvdi.dll       
   02-Oct-2003  18:59  2000.80.867.0      33,340  Ssmslpcn.dll     
   31-May-2003  23:01  2000.80.818.0      82,492  Ssnetlib.dll     
   31-May-2003  23:01  2000.80.818.0      25,148  Ssnmpn70.dll     
   28-Oct-2003  02:21  2000.80.873.0     123,456  Stardds.dll      
   31-May-2003  23:01  2000.80.818.0     158,240  Svrnetcn.dll     
   31-May-2003  16:59  2000.80.818.0      76,416  Svrnetcn.exe     
   30-Apr-2003  21:52  2000.80.816.0      45,132  Ums.dll          
   01-Jul-2003  22:19  2000.80.834.0      98,816  Xpweb70.dll      

Nota Devido a dependências de ficheiros, a correcção mais recente ou funcionalidade que contém estes ficheiros pode também conter ficheiros adicionais.

Ponto Da Situação

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

Este problema foi corrigido pela primeira vez no Microsoft SQL Server 2000 Service Pack 4.

Mais Informação

Depois de instalar a correcção descrita neste artigo, certifique-se que sinalizador de rastreamento 9209 é activada quando inicia o SQL Server. Para esta correcção entrem em vigor, tem de ter sinalizador de rastreamento 9209 activada quando iniciar o SQL Server. Para o fazer, siga estes passos:
  1. Inicie o SQL Server Enterprise Manager.
  2. Clique com o botão direito do rato a instância do SQL Server e, em seguida, clique em Propriedades .
  3. Clique no separador Geral e, em seguida, clique em Parâmetros de inicialização .
  4. Na caixa de diálogo Parâmetros de inicialização , escreva -T9209 na caixa de parâmetro , clique em Adicionar e, em seguida, clique em OK .
  5. Na caixa de diálogo Propriedades do servidor de SQL , clique em OK .
  6. Reinicie o SQL Server.

Tipo de dados conversões (neste caso, quando uma coluna nvarchar/nchar é comparado com uma coluna varchar/char ) na coluna de uma consulta pode ter um efeito adverso no desempenho da consulta e é uma boa ideia para evitar a fazê-lo se for possível. Se utilizar conversões de tipo de dados, SQL Server não poderá produzir com exactidão as estimativas de cardinalidade. SQL Server também poderá restrições de índices adequados a utilizar. Para obter informações adicionais sobre conversões de tipo de dados, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
271566PROBLEMA: SQL Server comparações entre colunas e constantes com diferentes tipos de dados

Propriedades

Artigo: 830887 - Última revisão: 2 de novembro de 2007 - Revisão: 5.3
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Palavras-chave: 
kbmt kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB830887 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: 830887

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