這更像是一個技術性的「如何操作」或「最佳方法」問題。C#LINQ和涉及大型數據集的計算
我們目前需要從數據庫中檢索記錄,將它們放入「內存」列表中,然後對數據執行一系列計算,即最大值,平均值和一些更具體的自定義統計數據。
將數據存入「內存中」列表並不成問題,因爲我們使用NHibernate作爲我們的ORM,它在從數據庫檢索數據方面表現出色。我正在尋求的建議是我們應該如何最好地對結果數據列表進行計算。
理想情況下,我想爲每個統計量MaximumValue(),AverageValueUnder100(),MoreComplicatedStatistic()等等創建一個方法。當然,將所需的變量傳遞給每個方法並返回結果。這種方法還可以使單元測試變得輕而易舉,併爲我們提供出色的覆蓋。
如果我們爲每個計算執行一次LINQ查詢,還是應該儘可能多地將每個統計方法的調用合併爲儘可能少的LINQ查詢,那麼會有性能問題嗎?例如,將數據列表傳遞給名爲AverageValueBelow100的方法並沒有什麼意義,然後將整個數據列表傳遞給另一個方法AverageValueBelow50,只要這些方法可以有效地用一個LINQ查詢執行。
如何在不犧牲性能的情況下實現高水平的粒度和分離?
任何建議......這個問題是否足夠清楚?
最好的方法是對數據庫執行查詢,您可以從索引中獲益,從而提高性能 –
真的嗎?所以不是處理「內存中」,我們最好查詢數據庫。一些計算相當複雜,所以我不完全確定這將是最好的方法。 – Rowen
大多數數據庫都更快 –