2012-05-31 42 views
0

因此我們運行一個下線報告。收集登錄人員的下線中的每個人。一些客戶的人員運行此操作時沒有問題,因爲它返回的記錄少於100條。試圖通過非常大的通話阻止多個數據庫調用

然而,有些客戶的客戶會返回4,000-6,000行,而這些數據的價值大約爲8 MB。實際上,我必須在我的開發機器上增加我的緩衝區限制,以處理大量請求。

什麼是一些最好的方式來存儲這一大塊數據,並有助於防止它連續運行多次?

它可以存儲在cookie中嗎? 會話沒有問題,因爲這會佔用服務器上的大量內存。

在這一點上,我對任何事情都很開放,試圖更好地將舊流程簡化爲更快速的流程。

現在做了什麼,它是否加載整個記錄集,它循環遍歷記錄集,將數據構建到return_value單元格中。

這會更好地變成jquery/ajax調用嗎?

唯一的主要要求是:

傳統的ASP 的jQuery/JavaScript的 T-SQL

+0

電子郵件作爲文件附件? ;) –

+0

我希望.....大聲笑 –

回答

1

爲什麼不更改要分頁的報告?階段1:運行整個查詢,但該頁面僅根據所選頁面顯示正確的行集。現在您的響應緩衝區問題已修復。階段2:使用Row_Number()將分頁移動到查詢中,現在您的數據庫使用問題已修復。第3階段:由於csv非常好而且緊湊,因此可以向用戶提供「顯示到屏幕」(使用上面的內容)或「導出到csv」的選項,您可以在其中導出所有數據。

+0

你知道有什麼好的例子,我可以看看你的頭頂?我現在試着在google上搜索一個好的。 –

+0

我在這裏有一個ASP.Net MVC示例:http://stackoverflow.com/questions/10121735/asp-net-mvc3-webgrid-custom-server-side-sorting/10759799#10759799 –

0

使用Cookie似乎不明智的,給予答覆的問題What is the maximum size of a web browser's cookie's key?

我會建議使用ASP在Web服務器上創建一個文件並將數據寫入該文件。當用戶請求報告時,您可以確定是否已經過了「足夠的時間」,因爲它值得再次運行報告,或者緩存的版本是否足夠。用戶的登錄詳細信息可能被用於命名文件或Session.SessionID,或者您可以在用戶的​​會話中存儲新內容。使用他們的登錄的好處是您的報告緩存可以存在比用戶的會話更長的時間。

0

進一步進行Brian's Answer查詢頁面計數,即將records returned/items per page四捨五入。然後在客戶端加入每個頁面查詢的結果。頁面從通過查詢提供的偏移處開始。現在您的客戶端上已經有足夠的金額而不會溢出緩衝區。它可以根據界面和用戶選項進行定製(每頁顯示x)。