Penomboran MySQL: Mendapatkan Keputusan dan Jumlah Kiraan Secara Cekap
Apabila melaksanakan penomboran dalam MySQL, amalan biasa untuk melakukan dua pertanyaan berasingan: satu hingga dapatkan jumlah bilangan keputusan dan satu lagi untuk mengehadkan rekod yang diambil. Pendekatan ini, yang dikenali sebagai pertanyaan berganda, boleh menjadi tidak cekap untuk set data yang besar.
Walau bagaimanapun, persoalan timbul sama ada mungkin untuk mendapatkan kedua-dua jumlah kiraan hasil dan mengehadkan keputusan dalam satu pertanyaan. Walaupun tiada cara langsung untuk mencapai ini, dua kaedah alternatif tersedia:
SQL_CALC_FOUND_ROWS dan FOUND_ROWS()
Daripada membuat pertanyaan dua kali, anda boleh menggunakan SQL_CALC_FOUND_ROWS dan FOUND_ROWS() berfungsi untuk mencapai hasil yang serupa. Pertanyaan dengan SQL_CALC_FOUND_ROWS mendahului pertanyaan mengehadkan dan panggilan FOUND_ROWS() mengambil jumlah kiraan.
Contoh:
SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE `some_condition`; SELECT FOUND_ROWS();
Nota: > Kaedah ini mempunyai potensi kelemahan. MySQL mempunyai pepijat yang memberi kesan kepada pertanyaan ORDER BY apabila menggunakan teknik ini, menjadikannya lebih perlahan pada jadual besar.
Caching the Count
Penyelesaian alternatif melibatkan caching jumlah kiraan untuk tempoh tertentu. Pendekatan ini menghapuskan keperluan untuk pertanyaan berasingan untuk mengambil kiraan sambil mengekalkan kecekapan.
Contoh:
Dapatkan kiraan dan cache selama 10 minit:
SET @count = (SELECT COUNT(*) FROM `table` WHERE `some_condition`);
Dalam pertanyaan seterusnya, gunakan cache kiraan:
SELECT * FROM `table` WHERE `some_condition` LIMIT 0, 10;
Caching kiraan meningkatkan prestasi dengan ketara, terutamanya untuk halaman yang kerap dilawati. Walaupun ia bukan penyelesaian pertanyaan tunggal, ia mencapai hasil yang sama sambil lebih cekap daripada pertanyaan berganda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Kedua-dua Jumlah Kiraan dan Hasil Penomboran dengan Cekap daripada MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!