2011-10-13 70 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將選擇並緩存存儲過程的執行計劃。這個計劃可能會針對一組給定的參數進行優化,並且對其他人來說是一個糟糕的選擇。

您應該檢查它選擇的執行計劃並評估它是否適用於最常見或最重的查詢。

可能的解決方案包括根據需要創建(或刪除)索引,或使用優化提示。

查詢優化首先看起來更加複雜和微妙。一些有用的參考文獻: