Der er ingen forskel.
Årsag:
Bøger online siger "COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } ) "
"1" er et ikke-nul udtryk:så det er det samme som COUNT(*) .Optimeringsværktøjet genkender det for, hvad det er:trivielt.
Det samme som EXISTS (SELECT * ...). eller EXISTS (SELECT 1 ...).
Eksempel:
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
Samme IO, samme plan, værkerne
Rediger, august 2011
Lignende spørgsmål på DBA.SE.
Rediger, dec 2011
COUNT(*) er nævnt specifikt i ANSI-92 (se efter "Scalar expressions 125 ")
Sag:
a) Hvis COUNT(*) er angivet, så er resultatet kardinaliteten af T.
Det vil sige, at ANSI-standarden anerkender det som blødende indlysende, hvad du mener. COUNT(1) er blevet optimeret af RDBMS-leverandører fordi af denne overtro. Ellers ville det blive evalueret i henhold til ANSI
b) Ellers lad TX være den enkelt-kolonne tabel, der er resultatet af at anvende