sql – SP需要15分钟,但执行时相同的查询会在1-2分钟内返回结果

所以基本上我有这个比较长的存储过程.基本的执行流程是,它将一些数据输入到使用他#sign声明的临时表中,然后通过这些表运行一个游标,将一个“运行总计”生成到使用CREATE创建的第三个临时表中.然后,这个结果的临时表与数据库中的其他表连接,以便在进行一些分组后生成结果.问题是,此SP已经运行正常,直到现在在1-2分钟内返回结果.现在突然拿了12-15分钟.如果我从SP中提取查询并通过手动设置相同的参数在管理工作室中执行,则在1-2分钟内返回结果,但SP需要很长时间.任何想法可能发生什么我试图生成Query和SP的实际执行计划,但是由于光标不能生成它.任何想法为什么SP需要这么长时间,而查询不?

解决方法

这是参数嗅探的脚印.看到这里再讨论一下; SQL poor stored procedure execution plan performance – parameter sniffing

有几个可能的修复,包括添加WITH RECOMPILE到您的存储过程,大约一半的时间.

对大多数情况(虽然取决于查询和sproc的结构)的建议修正是不直接在查询中使用您的参数,而是将它们存储在局部变量中,然后在查询中使用这些变量.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...