(Có, tôi đang thêm khác câu trả lời. Biện minh:Nó giải quyết vấn đề cơ bản theo một cách khác.)
Vấn đề cơ bản dường như là có một bảng "giao dịch" ngày càng phát triển mà từ đó có nhiều thống kê khác nhau, chẳng hạn như SUM(amount)
. Hiệu suất của điều này sẽ ngày càng kém đi khi (các) bảng ngày càng phát triển.
Cơ sở cho Câu trả lời này sẽ là xem xét dữ liệu theo hai cách:"Lịch sử" và "Hiện tại". Transactions
là Lịch sử. Một bảng mới sẽ là Current
tổng số cho mỗi Người dùng. Nhưng tôi thấy có nhiều cách để làm điều đó. Mỗi liên quan đến một số dạng tổng phụ để tránh thêm 773K hàng để có câu trả lời.
- Phương thức ngân hàng truyền thống ... Mỗi đêm kiểm đếm các
Transactions
trong ngày và thêm chúng vàoCurrent
. - Cách xem Vật chất hóa ... Mỗi khi một hàng được thêm vào
Transactions
, gia sốCurrent
. - Kết hợp:Giữ tổng phụ hàng ngày trong "Bảng Tóm tắt". Tính tổng các tổng phụ đó để lấy
SUM
suốt đêm qua.
Thảo luận thêm trong blog của tôi về Bảng tóm tắt .
Lưu ý rằng số dư cập nhật đến từng giây đối với ngân hàng hoặc phương thức kết hợp hơi phức tạp:
- Nhận số tiền của đêm qua
- Thêm bất kỳ Giao dịch nào đã xảy ra trong ngày.
Bất kỳ cách tiếp cận nào sẽ rất nhiều nhanh hơn so với việc quét tất cả 773K hàng cho người dùng, nhưng nó sẽ là mã phức tạp hơn.