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