Masalah:
Pertanyaan MySQL untuk mengira bilangan baris dalam jadual besar atau kumpulkan mereka mengikut lajur tertentu boleh menjadi perlahan apabila jadual berkembang. Malah mengindeks lajur yang digunakan untuk pengumpulan tidak meningkatkan prestasi secara konsisten.
Penerokaan:
Untuk mengoptimumkan pertanyaan ini, pendekatan alternatif tanpa menggunakan caching termasuk:
Pelaksanaan:
Untuk mengekalkan jadual ringkasan, pencetus boilerplate berikut boleh digunakan:
DELIMITER // CREATE TRIGGER ai_books AFTER INSERT ON books FOR EACH ROW UPDATE books_cnt SET total = total + 1 WHERE status = NEW.status // CREATE TRIGGER ad_books AFTER DELETE ON books FOR EACH ROW UPDATE books_cnt SET total = total - 1 WHERE status = OLD.status; // CREATE TRIGGER au_books AFTER UPDATE ON books FOR EACH ROW BEGIN IF (OLD.status <> NEW.status) THEN UPDATE books_cnt SET total = total + IF(status = NEW.status, 1, -1) WHERE status IN (OLD.status, NEW.status); END IF; END //
Dengan mengekalkan jadual ringkasan, pertanyaan pengiraan baris boleh dilaksanakan dengan banyak lebih pantas, tanpa mengira saiz meja.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mempercepatkan Pertanyaan Pengiraan Baris dalam Jadual MySQL Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!