Jika mysql harus menghitung 11 juta baris, sebenarnya tidak banyak cara untuk mempercepat penghitungan sederhana. Setidaknya untuk tidak membawanya ke kecepatan sub 1 detik. Anda harus memikirkan kembali bagaimana Anda menghitung. Beberapa ide:
-
Tambahkan bidang kenaikan otomatis ke tabel. Sepertinya Anda tidak akan menghapusnya dari tabel, jadi Anda bisa menggunakan matematika sederhana untuk menemukan jumlah rekor. Pilih nomor kenaikan otomatis minimum untuk tanggal awal yang lebih awal dan maksimum untuk tanggal terakhir dan kurangi satu dari yang lain untuk mendapatkan jumlah catatan. Misalnya:
SELECT min(incr_id) min_id FROM record_updates WHERE date_updated BETWEEN '2009-10-11 15:33:22' AND '2009-10-12 23:59:59'; SELECT max(incr_id) max_id FROM record_updates WHERE date_updated > DATE_SUB(NOW(), INTERVAL 2 DAY);`
-
Buat tabel lain yang merangkum jumlah catatan untuk setiap hari. Kemudian Anda bisa menanyakan tabel itu untuk total rekaman. Hanya akan ada 365 catatan untuk setiap tahun. Jika Anda perlu turun ke waktu berbutir lebih halus, kueri tabel ringkasan untuk hari penuh dan tabel saat ini hanya untuk jumlah catatan untuk hari awal dan akhir. Kemudian tambahkan semuanya.
Jika data tidak berubah, yang tidak tampak seperti itu, maka tabel ringkasan akan mudah dipelihara dan diperbarui. Mereka akan mempercepat segalanya secara signifikan.