Calculer le temps d’exécution d’une requête SQL?

Je propose une fonctionnalité de recherche sur mon site Web, lorsque l’utilisateur recherche un enregistrement, je souhaite afficher l’heure à laquelle la requête a été effectuée pour obtenir les mêmes résultats que Google. Lorsque nous cherchons quelque chose, google affiche le temps nécessaire pour obtenir des résultats?

Pour cela, j’ai déclaré une variable @start dans mon SP et trouvé la différence à la fin, comme ci-dessous;

DECLARE @start_time DATETIME SET @start_time = GETDATE() -- my query SELECT * FROM @search_temp_table SELECT RTRIM(CAST(DATEDIFF(MS, @start_time, GETDATE()) AS CHAR(10))) AS 'TimeTaken' 

Existe-t-il un autre moyen simple et rapide, ou une seule ligne de requête permettant de connaître le temps nécessaire à l’exécution d’une requête?

J’utilise SQL Server 2005.

Nous surveillons cela depuis le code de l’application, simplement pour inclure le temps nécessaire pour établir / fermer la connexion et transmettre des données sur le réseau. C’est assez simple …

  Dim Durée en tant que TimeSpan
 Dim StartTime comme DateTime = DateTime.Now

 'Appelez la firebase database ici et exécutez votre requête SQL

 Duration = DateTime.Now.Subtract (StartTime)
 Console.WriteLine (Ssortingng.Format ("La requête a pris {0} secondes", Duration.TotalSeconds.ToSsortingng ()))
 Console.ReadLine () 

Eh bien, si vous voulez vraiment le faire dans votre firebase database, il existe une manière plus précise comme indiqué dans MSDN :

 SET STATISTICS TIME ON 

Vous pouvez également lire ces informations à partir de votre application.

J’ai trouvé celui-ci plus utile et simple

 DECLARE @StartTime datetime,@EndTime datetime SELECT @StartTime=GETDATE() --Your Query to be run goes here-- SELECT @EndTime=GETDATE() SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in milliseconds] 

Veuillez utiliser

 -- turn on statistics IO for IO related SET STATISTICS IO ON GO 

et pour l’utilisation du calcul du temps

 SET STATISTICS TIME ON GO 

alors il donnera un résultat pour chaque requête. Dans la fenêtre des messages près de la fenêtre de saisie de la requête.

 declare @sttime datetime set @sttime=getdate() print @sttime Select * from ProductMaster SELECT RTRIM(CAST(DATEDIFF(MS, @sttime, GETDATE()) AS CHAR(10))) AS 'TimeTaken' 

Pourquoi le faites-vous en SQL? Certes, cela montre un “vrai” temps de requête par opposition au temps de requête + le temps nécessaire pour mélanger les données dans le réseau, mais cela pollue le code de votre firebase database. Je doute que vos utilisateurs s’en soucient – en fait, ils préfèrent probablement inclure l’heure du réseau, car tout cela consortingbue au temps nécessaire pour qu’ils voient la page.

Pourquoi ne pas faire le timing dans votre code d’application Web? En dehors de tout ce qui précède, cela signifie que pour les cas où vous ne voulez pas faire de timing, mais que vous voulez exécuter le même processus, vous n’avez pas besoin de manipuler quelque chose dont vous n’avez pas besoin.

Vous pouvez utiliser

 SET STATISTICS TIME { ON | OFF } 

Affiche le nombre de millisecondes requirejs pour parsingr, comstackr et exécuter chaque instruction

Lorsque SET STATISTICS TIME est activé, les statistiques de temps pour une instruction sont affichées. Lorsque OFF, les statistiques de temps ne sont pas affichées

 USE AdventureWorks2012; GO SET STATISTICS TIME ON; GO SELECT ProductID, StartDate, EndDate, StandardCost FROM Production.ProductCostHistory WHERE StandardCost < 500.00; GO SET STATISTICS TIME OFF; GO 

essaye ça

 DECLARE @StartTime DATETIME SET @StartTime = GETDATE() SET @EndTime = GETDATE() PRINT 'StartTime = ' + CONVERT(VARCHAR(30),@StartTime,121) PRINT ' EndTime = ' + CONVERT(VARCHAR(30),@EndTime,121) PRINT ' Duration = ' + CONVERT(VARCHAR(30),@EndTime -@starttime,114) 

Si cela ne le fait pas, alors essayez SET STATISTICS TIME ON