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

前端之家收集整理的这篇文章主要介绍了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的结构)的建议修正是不直接在查询中使用您的参数,而是将它们存储在局部变量中,然后在查询中使用这些变量.

原文链接:https://www.f2er.com/mssql/82328.html

猜你在找的MsSQL相关文章