2016-11-10 66 views
0

我有一個儀表板,其中顯示5個使用5個單獨的SELECT count (*)查詢計算的實時總計。這些插入到頁面的結果與由於SQL查詢導致加載15s的頁面

 Using rdr As SqlDataReader = db.ExecDataReader(qry1) 
      rdr.Read() 
      qa1.InnerText = rdr(rdr.GetName(0)) 
     End Using 

     Using rdr As SqlDataReader = db.ExecDataReader(qry2) 
      rdr.Read() 
      qa2.InnerText = rdr(rdr.GetName(0)) 
     End Using 

有什麼辦法來減少加載時間?我試着用UNION加入所有的查詢,而在SQL SMS中,它需要幾秒鐘的時間,但我不知道如何從結果中拉出每一行。

也就是說,服務器管理工​​作室仍然是12秒,這對於儀表板來說仍然是不合需要的。我的手是否與我們的基礎設施相關?

+3

那麼你已經確定了響應時間慢的原因 - 查詢代價高昂。你的第一個端口是嘗試優化這些查詢 - 檢查缺少的索引等。考慮到這一點,目前這個問題太模糊了,以幫助解決這個問題。 – AdaTheDev

+0

創建一個包含所有5個查詢的usp,並且這個usp將返回5個表的集合的數據集,然後您可以使用這些表進行進一步處理。 –

+0

你需要結果是100%準確嗎?您的表格是正在更新還是僅插入?你使用LOB嗎? –

回答

0

這聽起來像計數查詢需要優化。如果他們的運行速度很慢,或者您的數據量很大,或者存在一個複雜的查詢不適當的優化。

您需要發佈一些關於表結構的詳細信息,以及您使用我們能夠幫助緩慢查詢的可能原因的查詢。

0

緩存計數,在內存或階段表中。這將優化儀表板調用。接下來找到最有效的方式來根據您的要求更新您的舞臺。也許在添加新項目時更新舞臺,或創建一個間隔更新舞臺的後臺進程。