Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn MySQL SUM cực kỳ chậm

(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ào Current .
  • 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:

  1. Nhận số tiền của đêm qua
  2. 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn Mysql vào 2 bảng

  2. com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Mục nhập trùng lặp '' cho khóa 'CHÍNH'

  3. MySQL - Sự cố khi tạo hàm do người dùng xác định (UDF)

  4. Thay đổi định dạng hiển thị của trường ngày và giờ trong MySQL PHP

  5. Win7 MInGW QT Chương trình MySQL kêu gào không tìm thấy -lqsqlmysqld; thư viện bị mất tích ở đâu?