У меня есть два запроса t-sql, использующих SqlServer 2005. Как я могу измерить, сколько времени занимает выполнение каждого из них?
Использование моего секундомера не сокращает это.
performance
sql-server-2005
TheMoot
источник
источник
Ответы:
Один из упрощенных подходов к измерению «прошедшего времени» между событиями - просто получить текущую дату и время.
В SQL Server Management Studio
Чтобы вычислить истекшее время, вы можете захватить эти значения даты в переменные и использовать функцию DATEDIFF:
Это только один подход. Вы также можете получить истекшее время для запросов, используя SQL Profiler.
источник
SET @t1 = GETDATE();
верхней части моего запроса и затем вставляю вSET @t2 = GETDATE();SELECT 'NOTE 1',DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;SET @t1 = GETDATE();
разумные моменты в запросе (редактируя "ПРИМЕЧАНИЕ 1" соответственно). Обработка выборок как точек останова, а не измерений семантически идентична вашему подходу (хотя конечный набор @ t1 является ложным, и это предполагает, что все запросы должны быть измерены). Это чисто ментальная / типизированная оптимизация (одна вставка на точку останова, а не две вставки на запрос).Если вы хотите более точное измерение, чем ответ выше:
Результаты будут в окне сообщений .
Обновление (2015-07-29):
По популярному запросу я написал фрагмент кода, который можно использовать для определения времени выполнения всей хранимой процедуры, а не ее компонентов. Хотя это только возвращает время, затраченное на последний запуск, есть дополнительные статистические данные,
sys.dm_exec_procedure_stats
которые также могут иметь значение:источник
To use SET STATISTICS TIME, users must have the appropriate permissions to execute the Transact-SQL statement. The SHOWPLAN permission is not required.
От: technet.microsoft.com/en-us/library/ms190287.aspxВы также можете увидеть это решение
источник
Другой способ - использовать встроенную функцию SQL Server с именем,
Client Statistics
которая доступна через Меню> Запрос> Включить статистику клиента .Вы можете выполнить каждый запрос в отдельном окне запроса и сравнить результаты, которые приведены на
Client Statistics
вкладке рядом сMessages
вкладкой.Например, на рисунке ниже показано, что среднее время, затраченное на получение ответа сервера на один из моих запросов, составляет 39 миллисекунд.
Вы можете прочитать все 3 способа получения времени выполнения здесь . Возможно, вам даже понадобится отобразить
Estimated Execution Plan
ctrlLдля дальнейшего изучения вашего запроса.источник
еще лучше, это будет измерять среднее из n итераций вашего запроса! Отлично подходит для более точного чтения.
источник
MICROSECOND
кMILLISECOND
и очистить кэш каждый раз я вставленный следующие строки междуbegin
иdeclare @t0 ...
:CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
. Работает как шарм и именно то, что я искал. +1Нажмите на иконку Статистика, чтобы отобразить, а затем выполните запрос, чтобы узнать сроки и узнать, насколько эффективен ваш запрос.
источник