Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Kedua-dua Jumlah Kiraan dan Hasil Penomboran dengan Cekap daripada MySQL?

Bagaimanakah Saya Boleh Mendapatkan Kedua-dua Jumlah Kiraan dan Hasil Penomboran dengan Cekap daripada MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-03 12:36:10762semak imbas

How Can I Efficiently Retrieve Both Total Count and Paginated Results from MySQL?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn