Я пытаюсь проанализировать производительность запроса. К сожалению, у меня нет прав на запуск приблизительного или фактического плана запросов для базы данных, которую я читаю. (SHOWPLAN
разрешение отклонено в базе данных)
Я переписал исходный запрос, но хотел бы сравнить время выполнения для исходного запроса и двух моих запросов. Для этого я решил создать 4 переменные datetime2 и записать SYSDATETIME()
между каждой итерацией, а затем найти разницу.
К сожалению, я обнаружил, что однажды вызванный, SYSDATETIME()
не обновляется.
Всего мои 3 запроса выполняются за 17 секунд. Между каждым выполнением я должен видеть, как меняется отметка времени, но переменные каждый раз записывают одну и ту же отметку времени.
declare @a datetime2, @b datetime2, @c datetime2, @d datetime2
set @a = SYSDATETIME()
select bunch of columns from a bunch of joined tables
set @b = SYSDATETIME()
select bunch of columns and sub-queries from a bunch of tables joined a little differently
set @c = SYSDATETIME()
select bunch of columns and sub-queries from a bunch of differently joined tables and sub-queries
set @d = SYSDATETIME()
print @a
print @b
print @c
print @d
Все 4 переменные имеют одинаковое значение.
a 2019-04-05 16:00:09.3947421
b 2019-04-05 16:00:09.3947421
c 2019-04-05 16:00:09.3947421
d 2019-04-05 16:00:09.3947421
Общее время выполнения составило 19 секунд, поэтому для проверки должны быть действительные данные.
Есть предложения?