Je corrige des problèmes de performances sur une procédure stockée à plusieurs états dans SQL Server. Je veux savoir sur quelle (s) partie (s) je dois passer du temps.
Je comprends de Comment lire le coût de la requête, et est-ce toujours un pourcentage? que même lorsque SSMS est invité à inclure le plan d'exécution réel , les chiffres du "coût de la requête (par rapport au lot)" sont toujours basés sur des estimations de coûts , qui peuvent être très éloignées des chiffres réels
D'après la mesure des performances des requêtes: «Execution Plan Query Cost» vs «Time Taken», je comprends que je peux entourer l'invocation de la procédure stockée d' SET STATISTICS TIME
instructions, et j'obtiendrai ensuite une liste comme celle-ci dans le Messages
volet:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
[etc]
SQL Server Execution Times:
CPU time = 187 ms, elapsed time = 206 ms.
avec un message de sortie pour chaque instruction.
Je peux `` facilement '' (mais pas commodément) associer la sortie des statistiques de temps aux plans d'exécution instruction par instruction dans le volet Plan d'exécution, en les comptant: la quatrième SQL Server Execution Times
sortie de message correspond à Query 4
dans le volet Plan d'exécution, etc.
Mais y a-t-il une meilleure façon?
Duration
et lesCPU
résultats sont des chiffres réels plutôt que des estimations, oui?