Đây là câu hỏi "hướng dẫn" hoặc "cách tiếp cận tốt nhất" kỹ thuật.C# LINQ và các tính toán liên quan đến các tập dữ liệu lớn
Chúng tôi có yêu cầu hiện tại để truy xuất hồ sơ từ cơ sở dữ liệu, đặt chúng vào danh sách 'trong bộ nhớ' và sau đó thực hiện một loạt các phép tính trên dữ liệu, tức là giá trị tối đa, trung bình và một số thống kê tùy chỉnh cụ thể hơn .
Đưa dữ liệu vào danh sách 'trong bộ nhớ' không phải là vấn đề khi chúng tôi sử dụng NHibernate làm ORM và nó thực hiện công việc tuyệt vời để truy xuất dữ liệu từ cơ sở dữ liệu. Lời khuyên tôi đang tìm kiếm là cách chúng tôi nên thực hiện tốt nhất các phép tính trên danh sách dữ liệu kết quả. Lý tưởng nhất là tôi muốn tạo ra một phương pháp cho mỗi thống kê, MaximumValue(), AverageValueUnder100(), MoreComplicatedStatistic() vv vv Tất nhiên chuyển các biến cần thiết cho mỗi phương pháp và có nó trả về kết quả. Cách tiếp cận này cũng sẽ làm cho việc kiểm tra đơn vị trở nên dễ dàng và cung cấp cho chúng tôi mức độ phù hợp tuyệt vời.
Sẽ có một lần truy cập hiệu suất nếu chúng tôi thực hiện truy vấn LINQ cho mỗi phép tính hoặc nên hợp nhất nhiều cuộc gọi đến từng phương pháp thống kê trong ít nhất LINQ truy vấn nhất có thể. Ví dụ, nó không có ý nghĩa nhiều khi chuyển danh sách dữ liệu sang một phương thức có tên là AverageValueBelow100 và sau đó chuyển toàn bộ danh sách dữ liệu sang phương thức khác AverageValueBelow50 khi chúng có hiệu quả có thể được thực hiện với một truy vấn LINQ.
Làm cách nào chúng tôi có thể đạt được mức độ chi tiết và tách biệt cao mà không bị mất hiệu suất?
Bất kỳ lời khuyên nào ... là câu hỏi đủ rõ ràng?
Cách tiếp cận tốt nhất là thực hiện các truy vấn đối với cơ sở dữ liệu nơi bạn có lợi ích của các chỉ mục để cải thiện hiệu suất –
thực sự? thay vì quá trình 'trong bộ nhớ' chúng ta sẽ tốt hơn để truy vấn cơ sở dữ liệu. một số tính toán khá phức tạp vì vậy tôi không hoàn toàn chắc chắn đây sẽ là cách tiếp cận tốt nhất. – Rowen
Hầu hết các cơ sở dữ liệu thường nhanh hơn –