Es gibt keinen Unterschied.
Grund:
Bücher online sagt "COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
"
"1" ist ein Nicht-Null-Ausdruck:also dasselbe wie COUNT(*)
.Der Optimierer erkennt es als das, was es ist:trivial.
Dasselbe wie EXISTS (SELECT * ...
oder EXISTS (SELECT 1 ...
Beispiel:
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
Gleiches IO, gleicher Plan, funktioniert
Bearbeiten, August 2011
Ähnliche Frage zu DBA.SE.
Bearbeiten, Dezember 2011
COUNT(*)
wird speziell in ANSI-92 erwähnt (suchen Sie nach "Scalar expressions 125
")
Fall:
a) Wenn COUNT(*) angegeben ist, dann ist das Ergebnis die Kardinalität von T.
Das heißt, der ANSI-Standard erkennt es als offensichtlich an, was Sie meinen. COUNT(1)
wurde von RDBMS-Anbietern weil optimiert dieses Aberglaubens. Andernfalls würde es nach ANSI
b) Andernfalls sei TX die einspaltige Tabelle, die das Ergebnis der Anwendung des