Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Jumlah Kiraan Baris dengan Cekap dengan LIMIT dalam MySQL?

Bagaimana untuk Mendapatkan Jumlah Kiraan Baris dengan Cekap dengan LIMIT dalam MySQL?

DDD
DDDasal
2024-10-27 02:54:30861semak imbas

 How to Efficiently Retrieve Total Row Count with LIMIT in MySQL?

Mendapatkan Jumlah Kiraan Baris dengan LIMIT Bersyarat

Apabila menggunakan pertanyaan SQL dengan klausa LIMIT untuk penomboran, menentukan jumlah bilangan baris menjadi satu cabaran. Pendekatan standard melibatkan pelaksanaan pertanyaan dua kali, sekali tanpa klausa LIMIT untuk mendapatkan kiraan baris dan sekali lagi dengan LIMIT untuk mendapatkan semula data bernombor. Proses ini boleh memakan masa untuk pertanyaan yang kompleks.

Walau bagaimanapun, terdapat penyelesaian yang lebih cekap yang diperkenalkan dalam MySQL 4.0.0:

Menggunakan SQL_CALC_FOUND_ROWS dan FOUND_ROWS()

Pilihan SQL_CALC_FOUND_ROWS boleh ditambah pada pertanyaan selepas pernyataan SELECT. Ini menandakan MySQL untuk mengira jumlah bilangan baris tanpa mengambil kira keadaan LIMIT. Untuk mendapatkan semula jumlah bilangan baris, pertanyaan kedua menggunakan fungsi FOUND_ROWS() diperlukan.

Penggunaan:

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

Nota: Adalah penting untuk melaksanakan pertanyaan kedua sejurus selepas pertanyaan pertama, kerana SQL_CALC_FOUND_ROWS tidak menyimpan kiraan baris secara kekal.

Penahentian SQL_CALC_FOUND_ROWS dan FOUND_ROWS()

As MySQL 8.0.17, pengubah suai pertanyaan SQL_CALC_FOUND_ROWS dan fungsi FOUND_ROWS() telah ditamatkan dan akan dialih keluar dalam versi MySQL akan datang. Sebaliknya, disyorkan untuk menggunakan COUNT:

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

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Jumlah Kiraan Baris dengan Cekap dengan LIMIT dalam 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