Không có sự khác biệt.
Lý do:
Sách trực tuyến cho biết "
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
"
"1" là một biểu thức không rỗng:vì vậy nó giống với COUNT(*)
.Trình tối ưu hóa nhận dạng nó cho những gì nó là:tầm thường.
Giống như EXISTS (SELECT * ...
hoặc EXISTS (SELECT 1 ...
Ví dụ:
SELECT COUNT(1) FROM dbo.tab800krows
SELECT COUNT(1),FKID FROM dbo.tab800krows GROUP BY FKID
SELECT COUNT(*) FROM dbo.tab800krows
SELECT COUNT(*),FKID FROM dbo.tab800krows GROUP BY FKID
Cùng một IO, cùng một kế hoạch, cùng hoạt động
Chỉnh sửa, tháng 8 năm 2011
Câu hỏi tương tự trên DBA.SE.
Chỉnh sửa, tháng 12 năm 2011
COUNT(*)
được đề cập cụ thể trong ANSI-92 (tìm kiếm "Scalar expressions 125
")
Trường hợp:
a) Nếu COUNT (*) được chỉ định, thì kết quả là bản số của T.
Đó là, tiêu chuẩn ANSI công nhận nó là rõ ràng ý bạn muốn nói. COUNT(1)
đã được tối ưu hóa bởi các nhà cung cấp RDBMS bởi vì của sự mê tín này. Nếu không, nó sẽ được đánh giá theo ANSI
b) Nếu không, hãy đặt TX là bảng một cột có kết quả là áp dụng
cho mỗi hàng của T và loại bỏ các giá trị null. Nếu một hoặc nhiều giá trị null được chọn, thì điều kiện hoàn thành được đưa ra:cảnh báo-