2010-11-11 54 views
1

我正在使用SQL Server 2008,剛剛開始在查詢數據庫時出現間歇性問題。使用WHERE子句時,間歇性的查詢速度慢

至少每天一次,我因爲查詢速度緩慢而導致很多應用程序超時。這沒有特別的時間,有時在早上,有時在下午。每次我開始解決問題時,它都會在幾分鐘內解決問題。

通常我使用此查詢:

SELECT名字從人口統計學WHERE名稱IS NOT NULL

,並在<1秒運行。但是,在這些「問題時間」期間,查詢需要大約3分鐘的時間。一旦查詢完成,我可以再次運行它並且工作得很好(幾乎是即時)。

而且,上面的查詢運行時,我可以用這個:

SELECT名字從人口統計學

,它運行完美。沒有延遲。唯一的區別是WHERE條款。那麼,我該從哪裏開始排除故障?我應該使用哪些工具來查找原因?

在此先感謝。

回答

2

首先要做的是查看查詢的執行計劃。爲此,請在Management Studio中打開查詢窗口,然後在查詢菜單中選擇包括實際執行計劃。運行您的查詢,然後轉到執行計劃選項卡並保存計劃。

當您看到性能問題時,請重複這些步驟。然後,加載兩個執行計劃,並比較它們,看看有什麼不同。如果有差異,他們可能會指出你在正確的方向找到問題。

+0

感謝有關執行計劃的信息。事實證明,當我比較兩者時幾乎沒有什麼區別。我會接受這個答案,因爲它幫助最大。 – Travis 2010-11-12 17:24:41

+1

如果計劃之間沒有很大的差異,那麼問題很可能是由服務器上的其他進程引起的。您可以嘗試通過使用帶有「持續時間」列上的篩選器的SQL事件探查器來跟蹤這些事件,以便僅返回超過10秒的查詢。然後,當問題發生時,查看配置文件數據以查看查詢運行緩慢時是否發生了其他事情。 – 2010-11-12 20:21:45

1

看看在故障期間您是否被另一個進程阻塞。