Fungsionalitas ini paling baik dilayani oleh fitur yang disebut tampilan terwujud , yang sayangnya tidak dimiliki MySQL. Anda dapat mempertimbangkan untuk bermigrasi ke sistem database yang berbeda, seperti PostgreSQL.
Ada cara untuk meniru tampilan terwujud di MySQL menggunakan prosedur tersimpan, pemicu, dan acara. Anda membuat prosedur tersimpan yang memperbarui data agregat. Jika data agregat harus diperbarui pada setiap sisipan, Anda dapat menentukan pemicu untuk memanggil prosedur. Jika data harus diperbarui setiap beberapa jam, Anda dapat menentukan Acara penjadwal MySQL atau tugas cron untuk melakukannya.
Ada pendekatan gabungan, mirip dengan opsi 3 Anda, yang tidak bergantung pada tanggal data input; bayangkan apa yang akan terjadi jika beberapa data baru tiba beberapa saat terlambat dan tidak berhasil menjadi agregasi. (Anda mungkin tidak memiliki masalah ini, saya tidak tahu.) Anda dapat menentukan pemicu yang memasukkan data baru ke dalam "backlog", dan meminta prosedur memperbarui tabel agregat dari backlog saja.
Semua metode ini dijelaskan secara rinci dalam artikel ini:http://www.fromdual.com/ mysql-materialized-views