Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Permintaan SUM MySQL sangat lambat

(Ya, saya menambahkan lain menjawab. Justifikasi:Ini mengatasi masalah mendasar dengan cara yang berbeda.)

Masalah mendasar tampaknya adalah bahwa ada tabel "transaksi" yang terus berkembang yang darinya diturunkan berbagai statistik, seperti SUM(amount) . Performa ini hanya akan semakin buruk seiring bertambahnya tabel.

Dasar dari Jawaban ini adalah melihat data dalam dua cara:"Riwayat" dan "Saat Ini". Transactions adalah Sejarah. Tabel baru akan menjadi Current total untuk setiap Pengguna. Tapi saya melihat banyak cara untuk melakukan itu. Masing-masing melibatkan beberapa bentuk subtotal untuk menghindari penambahan 773 ribu baris untuk mendapatkan jawabannya.

  • Cara perbankan tradisional... Setiap malam menghitung Transactions dan tambahkan ke Current .
  • Cara Tampilan Terwujud... Setiap kali baris ditambahkan ke Transactions , naikkan Current .
  • Hibrida:Simpan subtotal harian di "Tabel Ringkasan". Jumlahkan subtotal tersebut untuk mendapatkan SUM melalui tadi malam.

Diskusi lebih lanjut di blog saya di Ringkasan Tabel .

Perhatikan bahwa saldo terbaru untuk perbankan atau cara hybrid sedikit rumit:

  1. Dapatkan uang tadi malam
  2. Tambahkan Transaksi yang terjadi pada siang hari.

Pendekatan apa pun akan banyak lebih cepat daripada memindai semua 773 ribu baris untuk pengguna, tetapi ini akan menjadi kode yang lebih kompleks.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara melewati kolom dalam file CSV saat mengimpor ke tabel MySQL menggunakan LOAD DATA INFILE?

  2. python pymysql.err.OperationalError:(2013, 'Koneksi terputus ke server MySQL selama kueri')

  3. Sekuel findAll bukan fungsi

  4. Menghubungkan ke Mysql di AWS Elastic Beanstalk

  5. Bagaimana cara menggunakan AJAX untuk mengunggah file CSV besar?