Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menentukan Jumlah Kiraan Baris dengan Cekap dalam Pertanyaan SQL Bermukasurat?

Bagaimana untuk Menentukan Jumlah Kiraan Baris dengan Cekap dalam Pertanyaan SQL Bermukasurat?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 10:44:28709semak imbas

How to Efficiently Determine Total Row Count in Paginated SQL Queries?

Menentukan Jumlah Bilangan Baris dengan Penomboran

Apabila melaksanakan penomboran dalam pertanyaan SQL, menentukan jumlah bilangan baris dengan tepat boleh menjadi penting. Menjalankan pertanyaan dua kali—sekali tanpa klausa LIMIT untuk mengira baris dan sekali dengan klausa LIMIT untuk mendapatkan semula data bernombor—mungkin tidak optimum, terutamanya untuk pertanyaan kompleks.

Nasib baik, MySQL menyediakan penyelesaian yang elegan dengan binaan SQL_CALC_FOUND_ROWS dan FOUND_ROWS(). Dengan menambahkan SQL_CALC_FOUND_ROWS pada pertanyaan utama, MySQL mengira jumlah bilangan baris, walaupun dengan kehadiran klausa LIMIT. Pertanyaan berikutnya menggunakan FOUND_ROWS() mendapatkan kiraan ini.

Berikut ialah contoh:

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();

Pendekatan ini lebih pantas daripada menjalankan pertanyaan dua kali dan memberikan jumlah kiraan yang tepat.

Fungsi Ditamatkan dalam MySQL 8

Dalam MySQL 8.0.17, SQL_CALC_FOUND_ROWS dan FOUND_ROWS() telah ditamatkan. Untuk versi MySQL yang lebih baharu, adalah disyorkan untuk menggunakan COUNT.

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;

Dengan memanfaatkan teknik ini, pembangun boleh mengira baris dengan tepat dalam pertanyaan SQL bernombor tanpa overhed berbilang pertanyaan.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Jumlah Kiraan Baris dengan Cekap dalam Pertanyaan SQL Bermukasurat?. 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