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

PDO::rowCount VS COUNT(*)

Pertanyaan pertama:

Menggunakan count COUNT() , secara internal server (MySQL) akan memproses permintaan secara berbeda.

Saat melakukan COUNT() , server(MySQL) hanya akan mengalokasikan memori untuk menyimpan hasil penghitungan.

Saat menggunakan $row=$SQL->rowCount(); server (Apache/PHP) akan memproses seluruh rangkaian hasil, mengalokasikan memori untuk semua hasil tersebut, dan menempatkan server dalam mode pengambilan, yang melibatkan banyak detail berbeda, seperti penguncian.

Perhatikan bahwa PDOStatement::rowCount() mengembalikan jumlah baris yang dipengaruhi oleh pernyataan terakhir, bukan jumlah baris yang dikembalikan. Jika pernyataan SQL terakhir dieksekusi oleh PDOStatement terkait adalah SELECT pernyataan, beberapa database dapat mengembalikan jumlah baris yang dikembalikan oleh pernyataan itu. Namun, perilaku ini tidak dijamin untuk semua database dan tidak boleh diandalkan untuk aplikasi portabel.

Berdasarkan analisis saya, jika Anda menggunakan COUNT() , prosesnya akan dibagi ke MySQL dan PHP sementara jika Anda menggunakan $row=$SQL->rowCount(); , pemrosesan akan lebih untuk PHP.

Oleh karena itu COUNT() di MySQL lebih cepat.

Pertanyaan kedua:

COUNT(*) lebih baik dari COUNT(id) .

Penjelasan:

count(*) fungsi di mysql dioptimalkan untuk menemukan jumlah nilai. Menggunakan wildcard berarti tidak mengambil setiap baris. Itu hanya menemukan hitungan. Jadi gunakan count(*) sedapat mungkin.

Sumber:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengantar Pengelompokan dan Penjumlahan SQL

  2. Batasan untuk mencegah penyisipan string kosong di MySQL

  3. Tingkatkan bidang basis data sebesar 1

  4. Memformat larik PHP untuk klausa SQL IN

  5. Cara Menggunakan AspNet.Identity core di database My Sql