Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Messen Sie die Zeit, die zum Ausführen einer T-SQL-Abfrage benötigt wird

Wenn Sie eine genauere Messung als die obige Antwort wünschen:

set statistics time on 

-- Query 1 goes here

-- Query 2 goes here

set statistics time off

Die Ergebnisse werden in den Nachrichten angezeigt Fenster.

Aktualisierung (2015-07-29):

Auf vielfachen Wunsch hin habe ich ein Code-Snippet geschrieben, das Sie verwenden können, um die Ausführung einer gesamten gespeicherten Prozedur statt ihrer Komponenten zu timen. Obwohl dies nur die Zeit der letzten Ausführung zurückgibt, gibt es zusätzliche Statistiken, die von sys.dm_exec_procedure_stats zurückgegeben werden das kann auch von Wert sein:

-- Use the last_elapsed_time from sys.dm_exec_procedure_stats
-- to time an entire stored procedure.

-- Set the following variables to the name of the stored proc
-- for which which you would like run duration info
DECLARE @DbName NVARCHAR(128);
DECLARE @SchemaName SYSNAME;
DECLARE @ProcName SYSNAME=N'TestProc';

SELECT CONVERT(TIME(3),DATEADD(ms,ROUND(last_elapsed_time/1000.0,0),0)) 
       AS LastExecutionTime
FROM sys.dm_exec_procedure_stats
WHERE OBJECT_NAME(object_id,database_id)[email protected] AND
      (OBJECT_SCHEMA_NAME(object_id,database_id)[email protected] OR @SchemaName IS NULL) AND
      (DB_NAME(database_id)[email protected] OR @DbName IS NULL)