J'ai deux requêtes t-sql utilisant SqlServer 2005. Comment puis-je mesurer combien de temps il faut à chacune pour s'exécuter?
Utiliser mon chronomètre ne le coupe pas.
performance
sql-server-2005
TheMoot
la source
la source
Réponses:
Une approche simpliste pour mesurer le «temps écoulé» entre les événements consiste simplement à saisir la date et l'heure actuelles.
Dans SQL Server Management Studio
Pour calculer les temps écoulés, vous pouvez saisir ces valeurs de date dans des variables et utiliser la fonction DATEDIFF:
C'est juste une approche. Vous pouvez également obtenir les temps écoulés pour les requêtes à l'aide de SQL Profiler.
la source
SET @t1 = GETDATE();
en haut de ma requête, puis je la colleSET @t2 = GETDATE();SELECT 'NOTE 1',DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;SET @t1 = GETDATE();
à des points judicieux dans la requête (en éditant "NOTE 1" de manière appropriée). Traiter les sélections comme des points d'arrêt plutôt que des mesures est sémantiquement identique à votre approche (bien que l'ensemble final sur @ t1 soit faux, et cela suppose que toutes les requêtes doivent être mesurées). Ceci est purement une optimisation mentale / typage (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 que la réponse ci-dessus:
Les résultats seront dans la fenêtre Messages .
Mise à jour (2015-07-29):
À la demande générale, j'ai écrit un extrait de code que vous pouvez utiliser pour chronométrer une procédure stockée entière, plutôt que ses composants. Bien que cela ne renvoie que le temps pris par la dernière exécution, il y a des statistiques supplémentaires renvoyées par
sys.dm_exec_procedure_stats
qui peuvent également être utiles:la source
To use SET STATISTICS TIME, users must have the appropriate permissions to execute the Transact-SQL statement. The SHOWPLAN permission is not required.
de: technet.microsoft.com/en-us/library/ms190287.aspxVous pouvez également voir cette solution
la source
Une autre méthode consiste à utiliser une fonctionnalité intégrée de SQL Server nommée,
Client Statistics
accessible via Menu> Requête> Inclure les statistiques du client .Vous pouvez exécuter chaque requête dans une fenêtre de requête séparée et comparer les résultats qui sont donnés dans l'
Client Statistics
onglet juste à côté de l'Messages
onglet.Par exemple, dans l'image ci-dessous, il montre que le temps moyen écoulé pour obtenir la réponse du serveur pour l'une de mes requêtes est de 39 millisecondes.
Vous pouvez lire les 3 façons d'acquérir le temps d'exécution ici . Vous devrez peut-être même afficher
Estimated Execution Plan
ctrlLpour une enquête plus approfondie sur votre requête.la source
encore mieux, cela mesurera la moyenne de n itérations de votre requête! Idéal pour une lecture plus précise.
la source
MICROSECOND
àMILLISECOND
et pour effacer le cache à chaque fois de lignes suivantes I inséré entrebegin
etdeclare @t0 ...
:CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
. Fonctionne comme du charme et exactement ce que je recherchais. +1Cliquez sur l'icône Statistiques pour afficher, puis exécutez la requête pour obtenir les horaires et connaître l'efficacité de votre requête
la source