*SQL Server: Count() vs. Count(1) – Eine Leistungsanalyse**
Viele SQL-Benutzer wundern sich über den Leistungsunterschied zwischen COUNT(*)
und COUNT(1)
. Beide Funktionen zählen Zeilen, aber gibt es einen echten Einfluss auf die Leistung?
In SQL Server (insbesondere Versionen ab 2005) ist die Antwort einfach: Es gibt keinen signifikanten Leistungsunterschied.
In der Dokumentation von Microsoft wird klargestellt, dass COUNT(*)
alle Zeilen in einer Tabelle zählt (oder diejenigen, die eine bestimmte Bedingung erfüllen). Entscheidend ist, dass COUNT(1)
– da „1“ ein Ausdruck ungleich Null ist – das gleiche Ergebnis liefert.
Der SQL Server-Abfrageoptimierer erkennt diese Äquivalenz. Es behandelt beide Funktionen identisch, was zu demselben Ausführungsplan, denselben E/A-Vorgängen und letztendlich derselben Leistung führt.
Betrachten Sie diese Beispiele:
<code class="language-sql">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;</code>
Das Ausführen dieser Abfragen führt zu identischen Ergebnissen und bestätigt die funktionale Äquivalenz von COUNT(*)
und COUNT(1)
. Daher ist die Wahl zwischen ihnen weitgehend eine Frage des Codierungsstils oder persönlicher Vorlieben; Es hat keine Auswirkungen auf die Abfrageleistung in SQL Server.
Das obige ist der detaillierte Inhalt vonCount(*) vs. Count(1) in SQL Server: Gibt es einen Leistungsunterschied?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!