Tôi thấy trong tài liệu về sự khác biệt giữa count(*)và count(pk). Tôi đã sử dụng count(pk)(nơi pka SERIAL PRIMARY KEY) không biết về sự tồn tại của count(*).
Câu hỏi của tôi là về tối ưu hóa nội bộ của Postgres. Có đủ thông minh để nhận ra rằng một SERIAL PRIMARY KEYsẽ tồn tại trong mỗi hàng và không bao giờ là sai và chỉ đếm các hàng hoặc nó sẽ thực hiện kiểm tra vị ngữ dự phòng cho mỗi hàng? Tôi đồng ý rằng điều này có lẽ là quá nhiều tối ưu hóa vô nghĩa nhưng tôi chỉ tò mò.
Tôi đã xem xét đầu ra của EXPLAINvà EXPLAIN VERBOSEcho count(*), count(id)và count(id > 50)để xem nếu EXPLAINđề cập đến việc kiểm tra các vị từ trong đầu ra của nó. Nó không.