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

MySQL:Cách nhanh nhất để đếm số hàng

Khi bạn COUNT(*) nó tính chỉ số cột đếm, vì vậy nó sẽ là kết quả tốt nhất. Mysql với MyISAM engine thực sự lưu trữ số lượng hàng, nó không đếm tất cả các hàng mỗi khi bạn cố gắng đếm tất cả các hàng. (dựa trên cột của khóa chính)

Sử dụng PHP để đếm hàng không thông minh lắm, vì bạn phải gửi dữ liệu từ mysql sang php. Tại sao lại làm điều đó khi bạn có thể đạt được điều tương tự ở phía mysql?

Nếu COUNT(*) chậm, bạn nên chạy EXPLAIN trên truy vấn và kiểm tra xem các chỉ mục có thực sự được sử dụng hay không và chúng nên được thêm vào đâu.

Sau đây không phải là nhanh nhất cách, nhưng có một trường hợp, trong đó COUNT(*) không thực sự phù hợp - khi bạn bắt đầu nhóm kết quả, bạn có thể gặp sự cố, trong đó COUNT không thực sự đếm tất cả các hàng.

Giải pháp là SQL_CALC_FOUND_ROWS . Điều này thường được sử dụng khi bạn đang chọn các hàng nhưng vẫn cần biết tổng số hàng (ví dụ:đối với phân trang). Khi bạn chọn các hàng dữ liệu, chỉ cần thêm SQL_CALC_FOUND_ROWS từ khóa sau CHỌN:

SELECT SQL_CALC_FOUND_ROWS [needed fields or *] FROM table LIMIT 20 OFFSET 0;

Sau khi bạn đã chọn các hàng cần thiết, bạn có thể nhận được số lượng với một truy vấn duy nhất sau:

SELECT FOUND_ROWS();

FOUND_ROWS() phải được gọi ngay sau truy vấn chọn dữ liệu.

Tóm lại, mọi thứ thực sự phụ thuộc vào số lượng mục nhập bạn có và những gì có trong câu lệnh WHERE. Bạn thực sự nên chú ý đến cách các chỉ mục đang được sử dụng, khi có rất nhiều hàng (hàng chục nghìn, hàng triệu và nhiều hơ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. MySQL RAND () Hàm - Tạo một số ngẫu nhiên trong MySQL

  2. Nhiều câu lệnh CHÈN mysql trong một php truy vấn

  3. MySQL loại bỏ các bản sao khỏi cơ sở dữ liệu lớn một cách nhanh chóng

  4. nodejs mysql Lỗi:Mất kết nối Máy chủ đã đóng kết nối

  5. Cách Unpivot Table trong MySQL