2017-04-07 83 views
1

我有一個複雜的查詢,該查詢連接到具有大量數據的表上。應用程序運行幾次後查詢超時。唯一的辦法,我可以得到它的工作是由重新啓動SQL服務器或運行:運行幾次SQL Server查詢超時後,只能修復DROPCLEANBUFFERS或重新啓動SQLServer

DBCC DROPCLEANBUFFERS; 

有人可以給我的,我要尋找到有什麼事情的想法?我正在努力縮小需要解決的問題。有沒有辦法完全禁用查詢緩存?看起來緩存最終會導致超時。

+1

SQL Server從不超時的查詢。您的應用是否取消了查詢。你爲什麼要標記'ssms'這個問題,是從Management Studio運行的查詢? SSMS也不會超時查詢。 –

+1

你有一個性能問題,所以要分析它。 [如何分析SQL Server性能](http://rusanu.com/2014/02/24/how-to-analyse-sql-server-performance/)。 –

回答

1

看來你的查詢可能有過時的統計數據,嘗試更新的查詢中涉及的所有表的統計,今年提出的SQLServer在得到正確估計一個很好的機會,這也降低了一些補助

如果發生這種情況,即使更新統計後,嘗試微調查詢

更新統計,使用下面query..also嘗試用全掃描運行,即使這可能不是需要對所有情況

UPDATE STATISTICS tablename with fullscan; 
+0

如何更新統計信息? –

+0

@BlakeRivell:查看已更新 – TheGameiswar

2

TheGame iswar提出更新統計數據是一個非常好的主意。儘管如此,即使更新統計數據緩解了超時問題,您也可能需要進一步調查。

這聽起來像是你正在得到一個查詢計劃,它只適用於發送給它的一些參數,這可能導致參數嗅探;特別是在數據嚴重偏斜的情況下。

您是否嘗試過將option (recompile)添加到查詢或with recompile如果它是一個過程?

您是否檢查過執行計劃?

參考:

+1

極好的鏈接。 – TDP