微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的结构)的建议修正是不直接在查询中使用您的参数,而是将它们存储在局部变量中,然后在查询中使用这些变量.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐