Я пытаюсь выяснить, почему хранимая процедура SQL Server выполняется медленно, поэтому я добавил несколько грубых таймеров, например:
Create Procedure DoStuff
As Begin
Declare @Stopwatch datetime
Set @Stopwatch=GetDate()
Print char(13) + 'Task A'
/* Perform Task A */
Print DateDiff(ms, @Stopwatch, GetDate()); Set @Stopwatch = GetDate()
Print char(13) + 'Task B'
/* Perform Task B */
Print DateDiff(ms, @Stopwatch, GetDate()); Set @Stopwatch = GetDate()
Print char(13) + 'Task C'
-- Perform Task C
Print DateDiff(ms, @Stopwatch, GetDate()); Set @Stopwatch = GetDate()
End
Exec DoStuff
Я получаю что-то вроде этого:
Task A
0
Task B
80
Task C
100
Так что я думаю, что выполнение процедуры займет 180 мс. Однако процедура занимает более 3000 мсек; в статистике клиентов я получаю
Client processing time: 12
Total execution time: 3105
Wait time on server replies: 3093
Что составляет дополнительные ~ 2800 мс?