【发布时间】:2011-01-13 16:39:50
【问题描述】:
我试图弄清楚为什么 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
我得到了这样的东西:
任务 A 0 任务 B 80 任务 C 100所以我认为该过程需要 180 毫秒才能执行。但是,该过程需要 3000+ 毫秒才能执行;在客户统计中,我得到
客户处理时间:12 总执行时间:3105 服务器回复的等待时间:3093额外的 ~2800 毫秒是什么原因?
【问题讨论】:
标签: sql sql-server optimization query-optimization