现在有个存储过程调用他很慢(就是从外面用exec 执行到进入存储过程内部需要2秒,还没有开始执行存储过程内部的代码)
例:
CREATE PROCEDURE proc1(
参数……
)
AS
print convert(varchar(50,getdate(),121)--时间2
--以下是存储过程的处理
goprint convert(varchar(50,getdate(),121)--时间1
EXEC proc1 参数……
go
两次输出的时间相差两秒,调用这个存储过程,还什么都没执行,为什么就用了两秒?
例:
CREATE PROCEDURE proc1(
参数……
)
AS
print convert(varchar(50,getdate(),121)--时间2
--以下是存储过程的处理
goprint convert(varchar(50,getdate(),121)--时间1
EXEC proc1 参数……
go
两次输出的时间相差两秒,调用这个存储过程,还什么都没执行,为什么就用了两秒?
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 1531 毫秒,占用时间 = 2353 毫秒。 SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
2013-06-06 14:32:00.507
这是两次时间之间的操作
CPU 时间 = 1531 毫秒,占用时间 = 2353 毫秒。
问题出在这里是变异和分析的时间久,而不是运行时间。
CPU 时间 = 1531 毫秒,占用时间 = 2353 毫秒。
问题出在这里是变异和分析的时间久,而不是运行时间。
对,但为什么会这么久,怎么处理呢
CPU 时间 = 1531 毫秒,占用时间 = 2353 毫秒。
问题出在这里是变异和分析的时间久,而不是运行时间。
对,但为什么会这么久,怎么处理呢
按照道理存储过程的执行计划会缓存重用,你是每次运行都是解析编译花费的时间都很久呢?
sp传入的参数是什么样的类型?
不是每次都重编译,但不知道为什么慢
不是动态拼凑的,
参数很多是输出参数(output)