我有我的asp.net頁面上的大型數據集和數據網格。我打算讓用戶可以過濾原始數據集。什麼是最好的方法?我應該使用linq來過濾數據集或繼續使用sql,還是有更好的方法使用vb.net與asp.net。SQL過濾,哪種方法最好?
回答
......「這取決於」
你說你是在談論一個「大數據集」。
如果它真的很大,那麼你不應該顯示給用戶。您還應該考慮將其存儲在IIS中可能會降低性能。你想要一個小而快的頁面。所以我認爲它不好發送每頁50多條記錄給用戶(它總是取決於記錄是什麼)
你應該考慮創建一些SQL,它允許你在結果中做一些分頁,傳送那些。如果你想嘗試在代碼中對其進行分類,那麼你可能會在你的客戶端獲得大量的數據。而sql server的主要目的是對數據進行排序和存儲。所以讓它做他的工作。您還必須考慮使您緩存的任何數據無效,這可能會成爲一個挑戰。看看漂亮的LINQ函數,如Skip(30).Take(10)...
另一方面,如果你有一些是靜態的,那麼你可能會從客戶端上兌現它,或一個web服務。
使用IIS會減慢頁面的速度? 和我不能使用分頁,但是如果我使用json或xml,因爲我需要使用數據集執行算術運算,例如有一個運行總計 – MyHeadHurts 2010-11-16 18:18:30
將數據存儲在請求之間的IIS內存中將導致您的應用程序無法擴展,因爲您可能需要一次爲多個用戶保存數據。確保你加載測試你的解決方案。而查詢的開銷並不多。 如果您包含運行總計,那麼它是一個完全不同的問題......您詢問了有關篩選的信息,只有請求者知道要跳過多少項;) – 2010-11-16 18:25:18
什麼是最好的方法?
這將是主觀的說什麼是最好的方式。我可以說的是什麼會是一個壞方法:通過應用程序而不是SQL數據庫來執行過濾。因此,如果Linq將Linq表示爲實體,並且將查詢轉換爲SQL語句,以便過濾由數據庫執行,那麼就可以。如果你的意思是Linq到對象,那麼你正在過濾內存中,爲了做到這一點,這意味着你已經將整個數據集加載到內存中,這是壞的。不要將任何東西加載到屏幕上不需要/顯示的內存中。
因此,加載頁面時加載所有值會更好。因爲我的gridview是在一個updatepanel。我可以調用另一個查詢並更新gridview。 – MyHeadHurts 2010-11-16 18:07:35
和linq我的意思是使用linq過濾數據集。 – MyHeadHurts 2010-11-16 18:08:26
僅當您要將它們顯示在屏幕上時才加載所有值。所以你的意思是Linq的對象。那麼,我個人更喜歡這樣做的SQL服務器(你也可以啓用緩存,以避免太多的數據庫)。 – 2010-11-16 18:08:45
嗯,我個人認爲,如果你已經擁有了內存中的所有數據,在內存中過濾它比在網絡上進行過濾要快。因此,你不會有最新的數據更新,除非你刷新它...
但正如Darin Dimitrov所說,如果你還沒有所有的數據,你應該只使用一個查詢,請求必要的數據。
通過回調SQL進行過濾可能很昂貴,例如自動完成樣式過濾。 通過調用回緩存數據的Web服務可以實現同樣的效果。
如果您有一組用戶點擊「搜索」的過濾器,那麼回調數據庫可能是合理的,以避免在Web服務器甚至客戶端緩存數據。
如果你有一個繁忙的數據庫,那麼你可能會回調不同的結果,所以這可以回到調用Web服務。
在這種情況下,我會考慮在沒有額外數據庫調用的情況下過濾Web服務。這樣說,如果你有很多客戶端,這可能會殺死一臺Web服務器。如果二級過濾器大大減少了數據集,那麼爲什麼要緩存呢?
不幸的是,這樣我想答案是沒有百達最佳途徑......
我的問題是我一直想弄清楚vb.net(asp.net)中的Web服務,我不能。那就是我一直在嘗試做的事情http://stackoverflow.com/questions/4169158/json -string-from-vb-net-side-to-asp-net – MyHeadHurts 2010-11-16 18:10:55
如果你能幫我解決這個問題,那就太棒了,我甚至試過了wcf – MyHeadHurts 2010-11-16 18:11:29
@NEWprogrammer:對不起,我是一個數據庫猴子... – gbn 2010-11-16 18:12:51
- 1. 哪種方法最好?
- 2. 哪種方法最好加入mysql表?
- 3. CSS - 哪種方法更好?
- 4. 哪種解決這種遊戲最好的方法是?
- 5. 推送通知 - 哪種方式最好?
- 6. 哪種數據挖掘算法最好?
- 7. 哪種模式最好?
- 8. 哪種數據庫最好
- 9. 哪種方法簽名好,爲什麼?
- 10. 哪種轉換方法更好?
- 11. 哪種方法更好,更安全?
- 12. 哪種方法更好,爲什麼?
- 13. Java設計:哪種方法好
- 14. ICallbackEventHandler,HttpHandler,XMLHttpRequestObjext - 哪種方法更好
- 15. 哪種方法更好? libsvm或svmclassify?
- 16. 哪種方法佈局更好?
- 17. setter驗證:哪種方法更好?
- 18. 哪種方法可變設置更好?
- 19. 關聯範圍 - 哪種方法更好?
- 20. 使用xml加載對象。哪種方法最好?
- 21. 哪種模擬本地平衡器最好的方法?
- 22. 哪種方法是最好的C程序運行在Android的
- 23. 對等VS多播VS SMB:哪種方法最好?
- 24. 哪種解析客戶端的json數據最好的方法?
- 25. 哪種SVG支持檢測方法最好?
- 26. 2種獲取wp8位置的方法,哪個最好?
- 27. SQL數據過濾方法
- 28. 什麼是最好的方式來過濾JOIN(sql)
- 29. 通過泛型參數實例化類 - 哪種方法更好
- 30. javascript哪種語法更好?
聽起來好像你還沒有在這裏表達額外的需求。 (我不能使用分頁)。你爲什麼不告訴我們你想要做什麼。 – 2010-11-16 21:04:21