Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Funktionsweise von COUNT_BIG() in SQL Server

In SQL Server der COUNT_BIG() Die Funktion gibt die Anzahl der in einer Gruppe gefundenen Elemente zurück. Sie können damit herausfinden, wie viele Zeilen sich in einer Tabelle oder Ergebnismenge befinden.

Diese Funktion funktioniert ähnlich wie COUNT() Funktion. Der Unterschied besteht darin, dass COUNT() gibt sein Ergebnis als int zurück , wohingegen COUNT_BIG() gibt sein Ergebnis als bigint zurück .

Daher COUNT_BIG() könnte sich als nützlich erweisen, wenn Sie davon ausgehen, dass Ihre Ergebnismenge eine sehr große Anzahl von Zeilen enthält (dh größer als 2.147.483.647).

Syntax

Die Syntax sieht so aus:

-- Aggregation Function Syntax  
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )  
  
-- Analytic Function Syntax  
COUNT_BIG ( [ ALL ] { expression | * } ) OVER ( [  ] )

ALL wendet die Aggregatfunktion auf alle Werte an. Dies ist der Standardwert.

DISTINCT gibt an, dass die Funktion die Anzahl der eindeutigen Nicht-Null-Werte zurückgibt.

expression ist ein Ausdruck beliebigen Typs. Aggregatfunktionen und Unterabfragen werden im Ausdruck nicht unterstützt.

* gibt an, dass alle Zeilen gezählt und zurückgegeben werden sollen, einschließlich doppelter Zeilen und Zeilen, die Nullwerte enthalten. COUNT(*) akzeptiert keine Parameter und unterstützt nicht die Verwendung von DISTINCT . Es erfordert auch keinen Ausdruck -Parameter (weil er keine Informationen über eine bestimmte Spalte verwendet).

OVER ( [ <partition_by_clause> ] teilt die von FROM erzeugte Ergebnismenge -Klausel in Partitionen, auf die die Funktion angewendet wird. Wenn nicht angegeben, behandelt die Funktion alle Zeilen der Ergebnismenge der Abfrage als eine einzige Gruppe.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein einfaches Beispiel, das zeigt, wie diese Funktion funktioniert:

USE WideWorldImportersDW;
SELECT COUNT_BIG(*) AS 'Row Count' 
FROM Fact.[Order];

Ergebnis:

+-------------+
| Row Count   |
|-------------|
| 231412      |
+-------------+

In diesem Fall gibt es 231412 Zeilen in Fact.[Order] Tabelle.

In diesem Fall hätte ich COUNT() verwenden können um dasselbe Ergebnis zurückzugeben, da die Zeilenanzahl klein genug für ein int ist zu handhaben.

Beispiel 2 – Eine größere Ergebnismenge

Der wahre Vorteil der Verwendung von COUNT_BIG() ist, wenn Ihre Ergebnismenge viel größer ist als im vorherigen Beispiel.

Beispiel:

SELECT COUNT_BIG(*) AS 'Row Count' 
FROM ReallyBigTable;

Ergebnis:

+-----------------+
| Row Count       |
|-----------------|
| 9147483648      |
+-----------------+

In diesem Fall ist die Zeilenanzahl so groß, dass ein int würde damit nicht umgehen können. Glücklicherweise können wir COUNT_BIG() verwenden , weil es sein Ergebnis als bigint zurückgibt .

Weitere Beispiele

Weitere Beispiele finden Sie unter Wie COUNT() Funktioniert in SQL Server. Dieser Artikel enthält mehr Beispiele als hier aufgelistet sind, die alle auch auf COUNT_BIG() anwendbar sind .

Eine Alternative:CAPROX_COUNT_DISTINCT()

Wenn Sie mit sehr großen Datensätzen arbeiten, sollten Sie die Verwendung von APPROX_COUNT_DISTINCT() in Betracht ziehen statt COUNT_BIG(DISTINCT ) in manchen Fällen.

APPROX_COUNT_DISTINCT() gibt eher einen ungefähren als einen genauen Wert zurück. Es ist jedoch so konzipiert, dass es viel reaktionsschneller ist als COUNT_BIG() , daher könnte es in Zeiten nützlich sein, in denen Reaktionsfähigkeit wichtiger ist als Präzision.

Es wurde entwickelt, um eindeutige Nicht-Null-Werte zurückzugeben, sodass es nur für Zeiten relevant wäre, in denen Sie normalerweise DISTINCT verwenden würden -Klausel mit COUNT_BIG() .

Beachten Sie auch, dass zum Zeitpunkt des Schreibens von APPROX_COUNT_DISTINCT() befindet sich im öffentlichen Vorschaustatus.