Er is geen verschil.
Reden:
Boeken online zegt "
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
"
"1" is een niet-null-expressie:het is dus hetzelfde als COUNT(*)
.De optimizer herkent het voor wat het is:triviaal.
Hetzelfde als EXISTS (SELECT * ...
of EXISTS (SELECT 1 ...
Voorbeeld:
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
Zelfde IO, zelfde plan, de werken
Bewerken, aug 2011
Soortgelijke vraag over DBA.SE.
Bewerken, december 2011
COUNT(*)
wordt specifiek genoemd in ANSI-92 (zoek naar "Scalar expressions 125
")
Case:
a) Als COUNT(*) is opgegeven, is het resultaat de kardinaliteit van T.
Dat wil zeggen, de ANSI-standaard herkent het als bloeden, duidelijk wat u bedoelt. COUNT(1)
is geoptimaliseerd door RDBMS-leveranciers omdat van dit bijgeloof. Anders zou het worden beoordeeld volgens ANSI
b) Laat anders TX de tabel met één kolom zijn die het resultaat is van het toepassen van de
op elke rij Tand waarbij nulwaarden worden geëlimineerd. Als een of meer null-waarden worden geëlimineerd, wordt een voltooiingsvoorwaarde verhoogd:waarschuwing-