Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PDO ::rowCount VS COUNT (*)

Câu hỏi đầu tiên:

Sử dụng số lượng COUNT() , bên trong máy chủ (MySQL) sẽ xử lý yêu cầu theo cách khác.

Khi thực hiện COUNT() , máy chủ (MySQL) sẽ chỉ cấp phát bộ nhớ để lưu trữ kết quả của số lượng.

Khi sử dụng $row=$SQL->rowCount(); máy chủ (Apache / PHP) sẽ xử lý toàn bộ tập kết quả, cấp phát bộ nhớ cho tất cả các kết quả đó và đặt máy chủ ở chế độ tìm nạp, liên quan đến rất nhiều chi tiết khác nhau, chẳng hạn như khóa.

Lưu ý rằng PDOStatement::rowCount() trả về số hàng bị ảnh hưởng bởi câu lệnh cuối cùng, không phải số hàng được trả về. Nếu câu lệnh SQL cuối cùng được thực thi bởi PDOStatement được liên kết là một SELECT , một số cơ sở dữ liệu có thể trả về số hàng được trả về bởi câu lệnh đó. Tuy nhiên, hành vi này không được đảm bảo cho tất cả các cơ sở dữ liệu và không được dựa vào cho các ứng dụng di động.

Theo phân tích của tôi, nếu bạn sử dụng COUNT() , quy trình sẽ được chia cho cả MySQL và PHP trong khi nếu bạn sử dụng $row=$SQL->rowCount(); , quá trình xử lý sẽ nhiều hơn đối với PHP.

Do đó COUNT() trong MySQL nhanh hơn.

Câu hỏi thứ 2:

COUNT(*) tốt hơn COUNT(id) .

Giải thích:

count(*) hàm trong mysql được tối ưu hóa để tìm số lượng giá trị. Sử dụng ký tự đại diện có nghĩa là nó không tìm nạp mọi hàng. Nó chỉ tìm thấy số đếm. Vì vậy, hãy sử dụng count(*) bất cứ khi nào có thể.

Nguồn:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy và tham gia, chúng tôi không có khóa ngoại

  2. Django Không thể thêm hoặc cập nhật hàng con:ràng buộc khóa ngoại không thành công

  3. Lược đồ XSD sang MySQL

  4. viết lại mod, slugs tiêu đề và htaccess

  5. Thay thế các ký tự NonASCII trong MYSQL