我正在尝试使用一些SQL数据来记录API。
我想获取last_elapsed_time
(存储过程运行所花费的时间)。
我可以通过交叉应用来获得此数据,但是它非常慢,大约15秒。
要大大减少这次的记录,
select
'text' = st.text,
'last_exec_time' = qs.last_execution_time,
'last_elapsed_time' = qs.last_elapsed_time
from
sys.dm_exec_query_stats as qs
cross apply
sys.dm_exec_sql_text(qs.sql_handle) as st
where
st.text like '%name_of_stored_procedure%'
是否有更快的方法来获取特定存储过程的last_elapsed_time
?
答案 0 :(得分:0)
您可以尝试使用计划句柄而不是sql句柄:
SELECT
'text' = dest.text,
'last_exec_time' = qs.last_execution_time,
'last_elapsed_time' = qs.last_elapsed_time
FROM sys.dm_exec_cached_plans decp
CROSS APPLY sys.dm_exec_sql_text(decp.plan_handle) AS dest
INNER JOIN sys.dm_exec_query_stats qs on qs.plan_handle = decp.plan_handle
WHERE dest.objectid = OBJECT_ID('<your procedure name>')