thể trùng lặp:
Count(*) vs Count(1)SQL Thực hành tốt nhất: count (1) hoặc đếm (*)
Tôi nhớ một giai thoại được nói:
bao giờ sử dụng count (*) khi đếm (1) sẽ làm
Gần đây tôi đã chuyển lời khuyên này cho một nhà phát triển khác, và đã được thử thách để chứng minh điều này là sự thật. Lập luận của tôi là những gì tôi đã nói cùng với khi tôi được đưa ra lời khuyên: rằng cơ sở dữ liệu sẽ chỉ trả lại cột đầu tiên, sau đó sẽ được tính. Các counterargument là cơ sở dữ liệu sẽ không đánh giá bất cứ điều gì trong dấu ngoặc đơn.
Từ một số thử nghiệm (không khoa học) trên các bảng nhỏ, chắc chắn dường như không có sự khác biệt. Tôi hiện không có quyền truy cập vào bất kỳ bảng lớn nào để thử nghiệm.
Tôi đã nhận được lời khuyên này khi tôi đang sử dụng Sybase và các bảng có hàng trăm triệu hàng. Tôi hiện đang làm việc với Oracle và dữ liệu ít hơn đáng kể.
Vì vậy, tôi đoán trong Tóm lại, hai câu hỏi của tôi là:
- Đó là nhanh hơn, đếm (1) hoặc đếm (*)?
- Điều này có thay đổi tùy theo các nhà cung cấp cơ sở dữ liệu khác nhau không?
1. ANSI SQL định nghĩa 'COUNT (*)' nên được tối ưu hóa 2. Điều này áp dụng cho hầu hết các RDBMS. Bất kỳ điều gì khác chỉ áp dụng cho các phiên bản cũ * nếu được nêu * nếu không giả sử COUNT (*) được tối ưu hóa. – gbn