2012-04-18 31 views
6

Tôi đang viết một logic phức tạp để tính doanh thu và tiền thưởng của khách hàng. Tôi có hàng triệu hồ sơ để tính tiền thưởng.Hiệu suất mã: Truy vấn SQL Server so với C# .Net ứng dụng web

Tôi muốn ý kiến ​​chuyên gia để hoạt động toán học không mất nhiều thời gian để hiển thị kết quả trên trang web.

Vậy tôi cần viết phần tính toán ở đâu? Trong truy vấn SQL Server (Sử dụng thủ tục và chức năng được lưu trữ) hoặc ASP.NET & C# .Net (lớp Logic nghiệp vụ)?

Phương pháp nào là phương pháp hay nhất? Xử lý trên máy chủ cơ sở dữ liệu hoặc xử lý trên máy chủ ứng dụng?

Trân

Mohsin JK

+1

nếu những người * hàng triệu hàng * đã có trong cơ sở dữ liệu SQL Server - xử lý dữ liệu ở đó! Có một thủ tục lưu trữ tạo ra các kết quả, đặt nó trong một bảng, và sau đó chỉ hiển thị các kết quả từ bảng đó trong trang ASP.NET của bạn. –

+0

Nếu tính toán của bạn yêu cầu sử dụng tổng hợp rộng rãi, bạn có thể xem qua 'các chế độ xem được thực hiện'. http://en.wikipedia.org/wiki/Materialized_view – edze

Trả lời

4

Nếu bạn có hàng triệu bản ghi thì tôi sẽ đề nghị bạn viết phần tính toán trong SQL Server vì các phép tính trong lớp nghiệp vụ sẽ mất nhiều thời gian hơn đáng kể.

Sau đây là gợi ý để cải thiện hiệu suất -

  • Viết Stored Thủ tục
  • Tạo chỉ số để lấy hồ sơ nhanh hơn
  • Sử dụng bảng tạm thời nếu Properties để thao tác là để lưu trữ khổng lồ

Bạn có thể tìm kiếm trên mạng để tìm ra các kỹ thuật tối ưu hóa hiệu năng T-SQL khác.

+1

Đồng ý. Additionaly, tôi đề nghị xem xét chức năng CLR. Đối với các phép tính phức tạp, CLR có thể nhanh hơn đáng kể so với T-SQL thuần túy. Hoặc nó có thể không có trong trường hợp cụ thể này, vì vậy kiểm tra là cần thiết. – VladV

1

Tôi có triệu hồ sơ để tính toán tiền thưởng

tôi nghĩ rằng nó là tốt hơn để tính toán nó trong cơ sở dữ liệu để tránh đi qua một lượng lớn dữ liệu từ cơ sở dữ liệu để áp dụng.

Các vấn đề liên quan