2012-11-20 62 views
0

我們有數據(> 1mil行)分佈在13個表中。SQL Server:100萬行聚合數據解決方案

我們有> 15存儲過程(發行版)基於不同的列(例如:地區,年份等)和大量聚合數據的存儲過程。

這些表具有用於INNER JOINS的唯一鍵(int),此ID的聚簇索引和覆蓋聚合查詢和分佈查詢中使用的列的索引。

所有這些存儲過程在@ 8分鐘內運行,但我需要在1分鐘以內的結果。

我想到的一個解決方法是在第一次運行後存儲分佈結果和聚合數據,然後只是在沒有任何計算的情況下檢索數據。這種情況下工作得很好,但在存儲過程(即動態sp)上,我們有過濾器,這使得這個選項有點麻煩。

你有什麼建議如何最好地處理這種情況?

+2

第一個建議是顯示一些代碼...和現有的索引...也許執行計劃的部分正在運行最慢 – PinnyM

+0

歡迎使用堆棧溢出。這是一個質量保證網站,這意味着您應該嘗試以QA格式格式化請求。這是非常含糊的,我可以給出的最好答案是參加DB開發課。 –

回答

0

如果您幾乎不需要擴展此解決方案(除了當前的過濾器),那麼我建議您堅持使用預先支持的報告表。您的系統在數據庫方面相對較小,響應時間似乎可以滿足您的需求。

嘗試創建一系列報表,理想情況下每個表都覆蓋多個報表。最後,每張表格都會有一個列的超集(不止一個報表需要),但這會使您在維護性方面更加輕鬆。使用您的報告工具(SSRS?)以及存儲的特效來管理用戶可選參數的過濾

0

這種情況聽起來像是SQL Server Analysis Services多維數據集的候選人。 SSAS允許您彙總數據並對大量數據執行快速分析。希望這可以幫助。