2016-07-04 58 views
1

我有一個數據庫程序,包含有關包含百萬條記錄的人的信息。LINQ或SQL查詢。什麼更有效率?

的任務之一是通過出生日期來過濾結果,然後通過城市羣 他們終於比較每個城市與 給定數字的人口。

我開始寫SQL查詢的一切,但後來我開始懷疑,這可能使服務器太忙,也許這是更好地做一些計算與應用程序本身。

我想知道是否有任何規則/建議

  • 時使用的服務器進行計算?
  • 何時在應用程序中使用LINQ等工具?
+0

加載所有到您的應用程序可能要花很多的記憶。並且全部加載到您的應用程序中也會佔用您的服務器。 –

+0

@juergend:然而,在數據庫中進行一些處理以及在程序的其餘部分進行一些處理也很常見,例如在數據庫端過濾數據,然後在代碼中進行一些複雜的轉換。 –

+1

這個特定的情況聽起來並不複雜。我會嘗試先在SQL中編寫它,然後看它如何執行以及查詢計劃的外觀。 –

回答

0

對於這樣的要求,也沒有固定的規則或策略,它是由應用/業務需求的驅動,一些建議,可以幫助:

  • 通常的SQL查詢做了很好的工作在翻騰地段的數據在過濾/分組/排序後提供更小的結果集。但它需要
    正確的表設計,索引優化。隨着數據量的增加SQL可能在通過網絡執行

  • 傳輸數據,從託管的數據庫應用程序是什麼殺死了性能,因爲網絡可以是大的瓶頸,尤其是如果數據超過一定規模

  • 在內存處理使用Linq2Objects可以非常快的重複調用,這就需要應用過濾器,對數據進行排序,並做一些更多的處理

  • 如果UI是一個豐富的客戶端,那麼你能負擔得起帶來大量的數據中內存,並繼續使用Linq進行工作,它可以是內存數據結構的一部分,如果UI是Web,那麼你可以d來緩存數據

  • 對於與sql相同的操作,對於內存數據,對於多種類型,您需要自定義代碼,最好使用表達式樹和linq,否則簡單的linq將爲已知固定式

我有一個類似的設計在我的Web應用程序之一,通常它是一個組合,效果最好最實際的方案