加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:28:46 所属栏目:MsSql教程 来源:网络整理
导读:所以基本上我有这个比较长的存储过程.基本的执行流程是,它将一些数据输入到使用他#sign声明的临时表中,然后通过这些表运行一个游标,将一个“运行总计”生成到使用CREATE创建的第三个临时表中.然后,这个结果的临时表与数据库中的其他表连接,以便在进行一些分组
所以基本上我有这个比较长的存储过程.基本的执行流程是,它将一些数据输入到使用他#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的结构)的建议修正是不直接在查询中使用您的参数,而是将它们存储在局部变量中,然后在查询中使用这些变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读