Mesurer le temps nécessaire à l'exécution d'une requête t-sql
J'ai deux requêtes t-sql à l'aide de sql server 2005. Comment puis-je mesurer combien de temps il faut pour chacun de courir?
À l'aide de mon chrono ne s'arrête pas là.
- Êtes-vous à l'aide de Sql Server Management Studio? Généralement, il affiche le temps écoulé pour chaque requête, mais seulement avec la deuxième résolution. Voir aussi cette question: stackoverflow.com/questions/8247587/...
Vous devez vous connecter pour publier un commentaire.
Une approche simpliste de mesurer le temps écoulé entre les événements est à saisir simplement la date et l'heure actuelles.
Dans SQL Server Management Studio
Pour calculer le temps écoulé, vous pouvez saisir ces valeurs de date dans des variables, et d'utiliser la fonction DATEDIFF:
C'est juste une approche. Vous pouvez également obtenir des temps écoulés pour les requêtes à l'aide du générateur de profils SQL.
SET @t1 = GETDATE();
au top de ma requête, puis collerSET @t2 = GETDATE();SELECT 'NOTE 1',DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;SET @t1 = GETDATE();
au judicieuse des points à l'intérieur de la requête (editting la "NOTE 1" de façon appropriée). Le traitement de la sélectionne que des points d'arrêt plutôt que de mesures est sémantiquement identique à votre approche (bien que la dernière de @t1 est faux, et cela suppose que toutes les requêtes doivent être mesurés). Ceci est purement mentale/saisie d'optimisation (une pâte par point d'arrêt, plutôt que deux pâtes par requête).Si vous voulez une mesure plus précise de la réponse ci-dessus:
Les résultats seront dans la Messages fenêtre.
Mise à jour (2015-07-29):
À la demande générale, j'ai écrit un extrait de code que vous pouvez utiliser à la fois l'intégralité d'une procédure stockée à exécuter, plutôt que de ses composants. Bien que cela ne renvoie l'heure de la dernière exécution, il y a d'autres stats retourné par
sys.dm_exec_procedure_stats
et peut-être aussi de la valeur:To use SET STATISTICS TIME, users must have the appropriate permissions to execute the Transact-SQL statement. The SHOWPLAN permission is not required.
à partir de: technet.microsoft.com/en-us/library/ms190287.aspxVous pouvez également Voir cette solution
encore mieux, ce sera de mesurer la moyenne de n itérations de votre requête! Idéal pour une lecture plus précise.
MICROSECOND
àMILLISECOND
et de vider le cache à chaque fois que j'ai inséré des lignes suivantes entrebegin
etdeclare @t0 ...
:CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
. Fonctionne comme un charme et exactement ce que je cherchais. +1Cliquez sur les Statistiques de l'icône à afficher, puis exécutez la requête pour obtenir les horaires et savoir comment l'efficacité de votre requête est
Un autre moyen est d'utiliser un Serveur SQL intégré dans la fonction appelée
Include Client Statistics
qui est accessible par le biais de Menu > Query > Inclure des Statistiques sur les Clients.Vous pouvez exécuter chaque requête séparée fenêtre de requête et de comparer les résultats de ce qui est donné dans
Client Statistics
onglet juste à côté de laMessage
onglet.Par exemple dans l'image ci-dessous, il montre que la moyenne, le temps écoulé pour obtenir la réponse du serveur pour l'une de mes questions est de 39 millisecondes.
Vous pouvez lire tous les 3 moyens pour acquérir des temps d'exécution dans ici.
Vous pouvez même avoir besoin d'afficher
Estimated Execution Plan
ctrlL pour un complément d'enquête au sujet de votre requête.