我們有這個數據庫應用程序不斷運行一個複雜的查詢與不同的參數。 它是一個編譯存儲過程(C#),它調用將4到6個表連接在一起的4個正常存儲過程,並將C#代碼合併到調用之間的結果中。如何分析慢速查詢?
這一直運行良好(快)6個月,直到數據庫恢復。然後,表演從幾乎瞬間變爲20秒以上。谷歌搜索清楚地表明,更新統計數據必須在表格上運行,是的,它的工作,再次即時查詢。
但是這個問題在一個月後回來了。好的沒問題,再次更新統計信息。再次快速。然後花了一個星期纔回來。慢速查詢出藍色。然後問題不斷回來,越來越快,在這一點上更新統計數據根本無濟於事。
如何分析這類問題?是否需要了解有關編譯存儲過程和查詢計劃的性能?
這聽起來很「典型的參數嗅探」。如果這是常規的TSQL,我會建議'優化FOR(... UNKNOWN)'提示作爲第一個嘗試 - 我不知道如何轉換爲*編譯*(C#)存儲過程。 –