Saat Anda COUNT(*)
dibutuhkan dalam indeks kolom hitungan, jadi itu akan menjadi hasil terbaik. Mysql dengan MyISAM mesin sebenarnya menyimpan jumlah baris, itu tidak menghitung semua baris setiap kali Anda mencoba menghitung semua baris. (berdasarkan kolom kunci utama)
Menggunakan PHP untuk menghitung baris tidak terlalu pintar, karena Anda harus mengirim data dari mysql ke php. Mengapa melakukannya ketika Anda dapat mencapai hal yang sama di sisi mysql?
Jika COUNT(*)
lambat, Anda harus menjalankan EXPLAIN
pada kueri, dan periksa apakah indeks benar-benar digunakan, dan di mana harus ditambahkan.
Berikut ini bukan yang tercepat cara, tetapi ada kasus, di mana COUNT(*)
tidak terlalu cocok - saat Anda mulai mengelompokkan hasil, Anda dapat mengalami masalah, di mana COUNT
tidak benar-benar menghitung semua baris.
Solusinya adalah SQL_CALC_FOUND_ROWS
. Ini biasanya digunakan ketika Anda memilih baris tetapi masih perlu mengetahui jumlah baris total (misalnya, untuk paging). Saat Anda memilih baris data, cukup tambahkan SQL_CALC_FOUND_ROWS
kata kunci setelah SELECT:
SELECT SQL_CALC_FOUND_ROWS [needed fields or *] FROM table LIMIT 20 OFFSET 0;
Setelah Anda memilih baris yang diperlukan, Anda bisa mendapatkan hitungan dengan satu kueri ini:
SELECT FOUND_ROWS();
FOUND_ROWS()
harus dipanggil segera setelah kueri pemilihan data.
Kesimpulannya, semuanya benar-benar bermuara pada berapa banyak entri yang Anda miliki dan apa yang ada dalam pernyataan WHERE. Anda harus benar-benar memperhatikan bagaimana indeks digunakan, ketika ada banyak baris (puluhan ribu, jutaan, dan lebih tinggi).