2011-10-13 73 views
2

我在SQL Azure数据库中存储了一个proc。如果我通过SSMS运行这个存储过程,它总是需要大约1秒的时间来运行。如果我从运行在Azure上的Web角色应用程序运行SqlCommand对象,它经常(并非总是)运行缓慢并最终超时。与通过SSMS或SqlCommand运行有什么不同?SQL Azure间歇性缓慢

+3

[可能参数嗅探(http://www.sommarskog.se/query-plan-mysteries。 html) –

+1

这似乎解决了这个问题。使用分配参数到局部变量技术似乎已经修复了它。 http://stackoverflow.com/questions/211355/parameter-sniffing-or-spoofing-in-sql-server – Craig

+1

马丁,如果你把你的评论变成答案,我会接受它。 – Craig

回答

0

SQL Server将选择并缓存存储过程的执行计划。这个计划可能会针对一组给定的参数进行优化,并且对其他人来说是一个糟糕的选择。

您应该检查它选择的执行计划并评估它是否适用于最常见或最重的查询。

可能的解决方案包括根据需要创建(或删除)索引,或使用优化提示。

查询优化首先看起来更加复杂和微妙。一些有用的参考文献: