日期:2014-05-17  浏览次数:20538 次

怎么计算哪个存储过程运行时间长?
本帖最后由 simon_wdming 于 2013-11-13 17:55:20 编辑
表如下:

Id IdType Content Table EndDateTime
--------------------------------------------------------------------------------
1 PID FYTD DB 2013/5/25 7:10
2 PID             FYTD DBD 2013/5/25 7:10
3 FI MT MGT 2013/5/25 7:10
4 PID DMRI TRI 2013/5/25 7:10
5 PID DMRI HTR 2013/5/25 7:10
6 PID DMRI HTOR         2013/5/25 7:11
7 PID PRI TRI 2013/5/25 7:11
8 PID NZPRI TRI 2013/5/25 7:11
9 PID DRI TRI 2013/5/25 7:11
10 PID NZRI TRI 2013/5/25 7:11
11 CI ER HER 2013/5/25 7:11
12 CI ER ERFF         2013/5/25 7:12
13 CI ER CR 2013/5/25 7:12
14 CI ER TRC 2013/5/25 7:12
15 DI DT DMT 2013/5/25 7:12
16 DI DT AR 2013/5/25 7:12
17 DI DT DA 2013/5/25 7:12
18 DI DT DSC 2013/5/25 7:12
19 DI DT KSC 2013/5/25 7:12
20 DI DT FRC 2013/5/25 7:12
21 DI DT ERC 2013/5/25 7:12
22 DI DT LICC         2013/5/25 7:32
23 DI DT LFM 2013/5/25 7:33
24 DI DT LAC 2013/5/25 7:33
25 PID PPC PB 2013/5/25 7:34
26 IPI SI SIH 2013/5/25 7:34
27 PID TD DB 2013/5/25 7:34
28 PID MPF TWS 2013/5/25 7:34
29 PID MPF MR 2013/5/25 7:34
30 PID MP MPC 2013/5/25 7:34 
--------------------------------------------------------
其中ID是自动增加的,IdType和Content相同的时候代表一个存储过程,Table代表在这个存储过程中用到的表,EndDateTime代表这个存储过程跑的结束时间.

同一个存储过程会对不同的表操作.不用管它.比如Id=1和2的时候是同一个存储过程操作了两个表.

求一个SQL语句查出哪个存储过程跑的时间长(时间超过10分钟的)? 比如上面的Id=22的这个存储过程跑了20分钟.
把这个Id=22 and IdType='DI' and Content='DT' and Table='LICC' 记录挑出来.

不要用游标的SQL语句来实现.
怎么计算哪个存储过程运行时间长?

------解决方案--------------------
try this,

select b.*
 from [表名] a
 left join [表名] b on a.Id=b.Id+1
 where datediff(mi,b.EndDateTime,a.EndDateTime)>=10