Đâ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
### 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).Đối với
MyISAM
bảng,COUNT(*)
được tối ưu hóa để trả về rất nhanh nếuSELECT
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
.
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.