我有一个由网站调用的存储过程来显示数据。今天网页已经开始计时,所以我得到了探查器,看到了花了太长时间的查询。然后我在管理工作室中使用相同的用户登录运行相同的查询,返回时间不到一秒。
有什么明显可能导致这种情况吗?我想不出为什么当ASP调用存储过程时需要30秒,但是当我调用它时它很好。
由于
答案 0 :(得分:1)
我想,可能有两个原因:
答案 1 :(得分:1)
这通常是因为某些SET-tings在Management Studio连接和ASP连接之间有所不同,例如SET ARITHABORT。这并不能解释为什么它只是从网站电话中开始出现今天的问题,但它有相关的公平机会。
答案 2 :(得分:0)
这似乎是参数嗅探...... 我通过将传入的参数分配给局部变量来停止嗅探,此时它似乎很好(即它再次从网站运行一秒钟)。如果它保持这样或者会再次降级将会很有趣。
我假设使用选项RECOMPILE运行会暂时“修复”有问题查询的参数嗅探问题,但事实并非如此。
好吧,好吧。谢谢大家回答。我会看到会发生什么答案 3 :(得分:0)
我们的IVR遇到了类似的问题 - 当我通过SSMS运行查询时,它立即返回,但是当它通过我们的IVR访问的网络服务运行时,它将超出大约20%的时间 - 真的很奇怪
我最终运行SQL事件探查器以查看正在提交的查询,然后根据“索引优化”向导的建议添加了一些其他索引,这样每次都会将IVR查询加速到一秒以下。我怀疑问题也与参数有关,虽然我没有比较两个不同场地之间的执行计划,但我怀疑它们是完全不同的。但是,SQL事件探查器可以帮助您对此进行排序,因为您可以看到实际提交给引擎的查询,以及它用于获取数据的执行计划。
答案 4 :(得分:-1)
听起来像死锁。