CORRECTIF : des requêtes qui ont une jointure externe gauche et un filtre IS NULL s'exécuter plus lentement après l'installation de correctif postérieur au Service Pack 3 SQL Server 2000

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

830887
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Bogue #: SHILOH_BUGS (470434)
Symptômes
Une requête peut exécutée plus lentement sur Microsoft SQL Server 2000 postérieur au Service Pack 3 correctif version 8.00.0776 ou les ultérieure par rapport à requêtes que l'exécution par rapport à SQL Server 2000 avant de correctif logiciel version 8.00.0776, si les conditions suivantes sont remplies :
  • La requête implique une jointure externe gauche entre deux tables. Dans l'exemple suivant, table 1 est la table de gauche et la table 2 est la table droite.
  • Une condition de filtre IS NULL existe sur une colonne de la table droite (table 2).
  • Les colonnes de jointure ont différents types de données. Une colonne est de type varchar/CHAR , et l'autre colonne est de type nvarchar/NCHAR .
  • Très peu des lignes de résultat de requête de satisfaire la condition lors de la jointure externe.
Par exemple, une requête qui contient la condition de jointure et filtre suivante peut s'exécuter plus lentement :
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
Cause
Ce problème se produit car l'optimiseur SQL Server sous-estime le nombre de lignes qui satisfait la condition de filtre IS NULL après la jointure.
Contournement
Pour contourner ce problème, assurez-vous que les colonnes de jointure sont du même type de données.
Résolution

Informations sur le service pack

Pour résoudre ce problème, procurez-vous le dernier service pack Microsoft SQL Server 2000. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
290211 Comment obtenir le dernier pack de service SQL Server 2000

Informations sur le correctif

La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont exprimées en coordinated universal temps (UTC). Lorsque vous affichez les informations de fichier, il est convertie en heure locale. Pour connaître le décalage entre l'heure UTC et l'heure locale, utilisez l'onglet Fuseau horaire dans l'outil Date et heure du Panneau de configuration.
   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      
note En raison des dépendances de fichiers, la fonctionnalité qui contient ces fichiers ou correctif plus récent peut également contenir des fichiers supplémentaires.
Statut
Microsoft a confirmé qu'il s'agit d'un problème les produits Microsoft répertoriés au début de cet article produits.

Ce problème a été corrigé dans Microsoft SQL Server 2000 Service Pack 4.
Plus d'informations
Après avoir installé le correctif logiciel qui est décrit dans cet article, vous devez vous assurer qu'indicateur de suivi 9209 est activé lorsque vous démarrez SQL Server. Pour ce correctif prenne effet, vous devez avoir indicateur de suivi 9209 activé lorsque vous démarrez SQL Server. Pour ce faire, procédez comme suit :
  1. Démarrez SQL Server Enterprise Manager.
  2. Cliquez avec le bouton droit sur l'instance de SQL Server, puis cliquez sur Propriétés .
  3. Cliquez sur l'onglet Général , puis cliquez sur Paramètres de démarrage .
  4. Dans la boîte de dialogue Paramètres de démarrage , tapez -T9209 dans zone paramètre , cliquez sur Ajouter , puis cliquez sur OK .
  5. Dans la boîte de dialogue Propriétés de SQL Server , cliquez sur OK .
  6. Redémarrez SQL Server.

Type de données conversions (dans ce cas, lorsqu'une colonne nvarchar/NCHAR est comparée à une colonne varchar/CHAR ) sur une colonne d'une requête peut avoir un effet négatif sur les performances de la requête et il est judicieux d'éviter ainsi si vous le pouvez. Si vous utilisez des conversions de types de données, SQL Server ne peut-être en mesure de générer avec précision des estimations de cardinalité. SQL Server peut également être empêché de l'aide d'index appropriées. Pour plus d'informations sur les conversions de types de données, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
271566 MODÈLE : SQL Server comparaisons entre les colonnes et constantes avec différents types de données

Avertissement : Cet article a été traduit de manière automatique

Propriétés

ID d'article : 830887 - Dernière mise à jour : 01/17/2015 05:26:54 - Révision : 5.3

  • Microsoft SQL Server 2000 Édition Développeur
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 2000 Édition Entreprise
  • Microsoft SQL Server 2000 Édition Personelle
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB830887 KbMtfr
Commentaires