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

Điều gì tốt hơn trong MYSQL count (*) hoặc count (1)?

Đây là câu trả lời của MySQL.

Chúng hoạt động hoàn toàn giống nhau - trừ khi bạn đang sử dụng MyISAM, sau đó là một trường hợp đặc biệt cho COUNT(*) tồn tại. Tôi luôn sử dụng COUNT(*) dù sao đi nữa.

https://dev.mysql.com/doc /refman/5.6/en/aggregate-functions.html# Chức năng_count

Đối với MyISAM bảng, COUNT(*) được tối ưu hóa để trả về rất nhanh nếu SELECT truy xuất từ ​​một bảng, không có cột nào khác được truy xuất và không có WHERE mệnh đề. Ví dụ:

mysql> SELECT COUNT(*) FROM student;

Tối ưu hóa này chỉ áp dụng cho MyISAM bảng, bởi vì số lượng hàng chính xác được lưu trữ cho công cụ lưu trữ này và có thể được truy cập rất nhanh chóng. COUNT(1) chỉ chịu sự tối ưu hóa tương tự nếu cột đầu tiên được xác định là NOT NULL .

### EDITMột số bạn có thể đã bỏ lỡ nỗ lực đen tối trong việc hài hước. Tôi muốn giữ đây là một câu hỏi không trùng lặp cho bất kỳ ngày nào như vậy khi MySQL sẽ làm điều gì đó khác với SQL Server. Vì vậy, tôi đã ném một phiếu bầu để mở lại câu hỏi (với một câu trả lời sai rõ ràng).

Tối ưu hóa MyISAM ở trên cũng áp dụng cho

COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)

Vì vậy, câu trả lời thực sự là chúng luôn luôn giống nhau.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhập tệp CSV vào bảng MySQL

  2. Hướng dẫn thiết kế cơ sở dữ liệu cho giỏ hàng trực tuyến trong MySQL

  3. Cách chạy nhiều phiên bản MySQL trên cùng một máy

  4. MySQL 'user_id' trong đó mệnh đề là vấn đề không rõ ràng

  5. Cách lưu trữ các ngày lặp lại mà hãy ghi nhớ Giờ tiết kiệm ánh sáng ban ngày