我有一個已經在我的2人身上工作過的SP,仍然需要2分鐘或更長時間才能運行。有沒有辦法讓這些預運行和存儲在緩存或其他地方,所以當我的客戶需要在Web瀏覽器中查看這些數據時,他不想讓自己或我自己掛上?保存/緩存存儲過程結果以獲得更好的性能? (SQL Server 2005)
我不是在靠近DBA的地方,所以我受到我僱用的人的擺佈,以便爲我解決這個問題,所以在前面有一點知識會幫助我。
我有一個已經在我的2人身上工作過的SP,仍然需要2分鐘或更長時間才能運行。有沒有辦法讓這些預運行和存儲在緩存或其他地方,所以當我的客戶需要在Web瀏覽器中查看這些數據時,他不想讓自己或我自己掛上?保存/緩存存儲過程結果以獲得更好的性能? (SQL Server 2005)
我不是在靠近DBA的地方,所以我受到我僱用的人的擺佈,以便爲我解決這個問題,所以在前面有一點知識會幫助我。
如果確實需要很長時間才能運行,您可以安排使用SQL Agent運行進程,並將輸出轉到表中,然後更改Web應用程序以讀取表而不是執行存儲過程。您必須決定刷新的頻率,並處理刷新時發生的請求,但也可以通過生成兩個輸出文件(一個用於最新刷新)和一個輸出文件來處理。
但我會再看一下這個過程,看一下執行計劃,看看它在哪裏很慢,確保它沒有進行全表掃描。
從「查詢」菜單嘗試「分析數據庫引擎優化顧問中的查詢」。 我通常將過程編寫到一個新窗口中,取出查詢定義部分並嘗試臨時表,常規表和表變量的不同組合。
您可以將結果集緩存在應用程序中而不是數據庫中,或者在內存中保存數據表的實例,或者將其序列化到磁盤。它返回多少行? 在這裏發佈代碼太長了嗎?順序
首選的解決方案:
OK首先第一件事情,索引:
其次,它的PROC使用下列性能殺手:
第三個
我建議你去購買你的開發者關於性能調優的書籍。
可能你的過程可能是固定的,但是如果沒有看到代碼,很難猜出問題可能是什麼。
此查詢的結果是否在線顯示,即在瀏覽器中顯示。如果是的話,你目前使用或正在使用哪種語言? – 2009-02-28 14:46:13
是的,它顯示在網上 - 我使用.Net。我知道我可以在我的應用程序中緩存結果,但最初的調用需要幾分鐘的時間是一個真正的問題。 – Slee 2009-02-28 17:03:02