Untungnya sejak MySQL 4.0.0 Anda dapat menggunakan SQL_CALC_FOUND_ROWS
opsi dalam kueri Anda yang akan memberi tahu MySQL untuk menghitung jumlah total baris dengan mengabaikan LIMIT
ayat. Anda masih perlu menjalankan kueri kedua untuk mengambil jumlah baris, tetapi ini adalah kueri yang sederhana dan tidak serumit kueri Anda yang mengambil data. Penggunaannya cukup sederhana. Dalam permintaan utama Anda, Anda perlu menambahkan SQL_CALC_FOUND_ROWS
pilihan tepat setelah SELECT
dan dalam kueri kedua Anda perlu menggunakan FOUND_ROWS()
berfungsi untuk mendapatkan jumlah baris. Kueri akan terlihat seperti ini:
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();
Satu-satunya batasan adalah Anda harus memanggil kueri kedua segera setelah yang pertama karena SQL_CALC_FOUND_ROWS
tidak menyimpan jumlah baris di mana pun. Meskipun solusi ini juga memerlukan dua kueri, ini jauh lebih cepat, karena Anda hanya menjalankan kueri utama sekali. Anda dapat membaca lebih lanjut tentang SQL_CALC_FOUND_ROWS dan FOUND_ROWS()
di dokumen MySQL.
EDIT: Anda harus mencatat bahwa dalam kebanyakan kasus menjalankan kueri dua kali sebenarnya lebih cepat daripada SQL_CALC_FOUND_ROWS
. lihat di sini
EDIT 2019:
Pengubah kueri SQL_CALC_FOUND_ROWS dan fungsi FOUND_ROWS() yang menyertainya tidak digunakan lagi pada MySQL 8.0.17 dan akan dihapus di versi MySQL mendatang.
https://dev.mysql.com /doc/refman/8.0/en/information-functions.html#function_found-rows
Disarankan untuk menggunakan COUNT
sebagai gantinya
SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;