J'ai capturé un plan de requête réel pour une requête spécifique.
Après cela, j'ai changé quelques éléments (y compris la mise à jour des statistiques) et relancé cette requête spécifique. Maintenant, le plan de requête réel est différent (ce qui est logique).
La requête s'exécute désormais beaucoup plus rapidement. Je suis curieux de savoir si le nouveau plan d'exécution a quelque chose à voir avec cela, car d'autres modifications (modifications de la configuration des E / S, des paramètres de la machine virtuelle, redémarrage de l'instance SQL, etc.) peuvent également être à l'origine de l'amélioration des performances. Pour tester cela, je voudrais réexécuter la requête et essayer de forcer SQL Server à utiliser l'ancien plan d'exécution.
Question : existe-t-il un moyen de réexécuter une requête avec un plan d'exécution fourni par l'utilisateur, ou même d'exécuter une requête directement à partir d'un tel plan?
Voici ce que j'ai essayé de comprendre celui-ci:
- J'ai cherché dans les livres disponibles au bureau ( Professional SQL Server 2012 Internals and Troubleshooting , Querying Microsoft SQL Server 2012 );
- Recherches Google, par exemple "exécuter une requête basée sur un plan de requête spécifique"
- Recherches DBA.SE, par exemple «exécuter le plan de requête» et «réexécuter le plan d'exécution»
- Et enfin, celui qui a répondu à mes questions plusieurs fois auparavant: cochez soigneusement "Questions qui peuvent déjà avoir votre réponse" avant de cliquer sur "Postez votre question" :-)
Bref, est-ce possible? Si c'est le cas, comment?
Réponses:
Oui.
Vous avez besoin de l'
USE PLAN
indice.Dans lequel vous fournissez le
XML
du premier plan.Bien qu'il ne garantisse pas que le plan sera exactement le même (par exemple, les opérateurs scalaires de calcul peuvent se déplacer par exemple), il sera probablement assez proche.
la source