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
Lepaskan: 2024-12-03 12:36:10
asal
759 orang telah melayarinya

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();
Salin selepas log masuk

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`);
Salin selepas log masuk

Dalam pertanyaan seterusnya, gunakan cache kiraan:

SELECT * FROM `table` WHERE `some_condition` LIMIT 0, 10;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan