CORRECTIF : Performances lorsque vous utilisez des variables de table dans SQL Server 2012 ou SQL Server 2014

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 2952444
Symptômes
Lorsque vous remplissez une variable table avec beaucoup de lignes et puis joignez avec d'autres tables, l'optimiseur de requêtes peut choisir un plan de requête inefficace, ce qui peut conduire à ralentir les performances de la requête.
Résolution
Après avoir appliqué ce correctif logiciel, vous pouvez activer l'indicateur de trace 2453 pour permettre à une variable de table déclencher les recompile lorsque suffisamment de nombre de lignes est modifié. Cela peut permettre à l'optimiseur de requêtes à choisir un plan plus efficace.

Le problème a été tout d'abord résolu dans la mise à jour cumulative suivante ou / et les Service Packs pour SQL Server.

Mise à jour cumulative 3 pour SQL Server 2014

À propos des mises à jour cumulatives pour SQL Server

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et des correctifs de sécurité qui ont été inclus dans la précédente mise à jour cumulative. Découvrez les dernières mises à jour cumulatives pour SQL Server :

Service pack 2 pour SQL Server 2012

À propos des Service packs pour SQL Server

Les service packs sont cumulatifs. Chaque nouveau service pack contient tous les correctifs qui se trouvent dans les service packs précédents et tous les nouveaux correctifs. Notre recommandation est d'appliquer le dernier service pack et la mise à jour cumulative la plus récente pour ce service pack. Vous n'avez pas à installer un service pack antérieur avant d'installer le dernier service pack. Utilisez le tableau 1 pour plus d'informations sur le dernier service pack et les dernières mises à jour cumulatives de rechercher dans l'article suivant :

Plus d'informations
Lorsque vous utilisez une variable de table dans un lot ou une procédure, la requête est compilée et optimisée pour l'état initial vide de variable de tableau. Si cette variable table est remplie avec autant de lignes lors de l'exécution, le plan de requête compilé avant peut-être ne plus être optimal. Par exemple, la requête peut joindre une variable de tableau avec une boucle imbriquée dans la mesure où il est généralement plus efficace pour un petit nombre de lignes. Ce plan de requête peut être inefficace si la variable de table a des millions de lignes. Une jointure de hachage peut être un meilleur choix dans ces conditions. Pour obtenir un nouveau plan de requête, elle doit être recompilé. Contrairement à d'autres utilisateurs ou les tables temporaires, toutefois, nombre de modifications de ligne dans une variable de table ne déclenche pas une recompilation de la requête. En règle générale, vous pouvez contourner ce problème avec OPTION (RECOMPILE), qui possède ses propres frais.
L'indicateur de trace 2453 permet l'avantage de recompilation de requête sans OPTION (RECOMPILE). Cet indicateur de suivi diffère de l'OPTION (RECOMPILE) dans deux aspects essentiels.
(1) qu'il utilise le même seuil de nombre de lignes que d'autres tables. La requête n'a pas besoin d'être compilés pour chaque exécution, contrairement à l'OPTION (RECOMPILE). Elle déclencherait recompile uniquement lors de la modification du nombre de lignes dépasse le seuil prédéfini.
(2) l'OPTION (RECOMPILE) oblige la requête à lire les paramètres et l'optimisation de la requête pour eux. Cet indicateur de suivi ne force pas la lecture du paramètre.

Remarque cet indicateur de suivi doit être activé lors de l'exécution. Vous ne pouvez pas utiliser cet indicateur de trace avec QUERYTRACEON. Cet indicateur de suivi doit être utilisé avec précaution car il peut augmenter le nombre de recompilations de requête qui pourrait coûter plus d'économies réalisées grâce à une meilleure optimisation des requêtes.
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 2952444 - Dernière mise à jour : 02/22/2016 06:56:00 - Révision : 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2952444 KbMtfr
Commentaires