Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL:Cara tercepat untuk menghitung jumlah baris

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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan fatal:Panggilan ke fungsi yang tidak ditentukan session_register()

  2. Koneksi ke Db mati setelah>4<24 di spring-boot jpa hibernate

  3. MySQL:Apa yang dimaksud dengan versi kebalikan dari LIKE?

  4. Transposisi Kolom Dinamis ke Baris

  5. Kesalahan MySQL 1170 (42000):Kolom BLOB/TEXT Digunakan dalam Spesifikasi Kunci Tanpa Panjang Kunci