sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan fungerer COUNT_BIG() i SQL Server

I SQL Server er COUNT_BIG() funktion returnerer antallet af elementer fundet i en gruppe. Du kan bruge den til at finde ud af, hvor mange rækker der er i en tabel eller et resultatsæt.

Denne funktion fungerer på samme måde som COUNT() fungere. Forskellen er, at COUNT() returnerer sit resultat som en int , hvorimod COUNT_BIG() returnerer sit resultat som en bigint .

Derfor COUNT_BIG() kan være praktisk, hvis du forventer, at dit resultatsæt har et meget stort antal rækker (dvs. større end 2.147.483.647).

Syntaks

Syntaksen ser sådan ud:

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

ALL anvender den aggregerede funktion på alle værdier. Dette er standardværdien.

DISTINCT angiver, at funktionen returnerer antallet af unikke ikke-nullværdier.

expression er et udtryk af enhver art. Samlede funktioner og underforespørgsler understøttes ikke i udtrykket.

* angiver, at alle rækker skal tælles og returneres, inklusive duplikerede rækker og rækker, der indeholder nulværdier. COUNT(*) tager ingen parametre og understøtter ikke brugen af ​​DISTINCT . Det kræver heller ikke et udtryk parameter (fordi den ikke bruger information om nogen bestemt kolonne).

OVER ( [ <partition_by_clause> ] dividerer resultatsættet produceret af FROM klausul i partitioner, som funktionen anvendes på. Hvis det ikke er angivet, behandler funktionen alle rækker i forespørgselsresultatsættet som en enkelt gruppe.

Eksempel 1 – Grundlæggende brug

Her er et grundlæggende eksempel, der viser, hvordan denne funktion fungerer:

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

Resultat:

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

I dette tilfælde er der 231412 rækker i Fakta.[Order] tabel.

I dette tilfælde kunne jeg have brugt COUNT() for at returnere det samme resultat, fordi rækkeantallet er lille nok til en int at håndtere.

Eksempel 2 – Et større resultatsæt

Den virkelige fordel ved at bruge COUNT_BIG() er, når dit resultatsæt er meget større end det forrige eksempel.

Eksempel:

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

Resultat:

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

I dette tilfælde er rækkeantallet så stort, at en int ikke ville kunne klare det. Heldigvis kan vi bruge COUNT_BIG() , fordi den returnerer sit resultat som en bigint .

Flere eksempler

For flere eksempler, se Hvordan COUNT() Fungerer i SQL Server. Artiklen giver flere eksempler, end der er angivet her, som alle også gælder for COUNT_BIG() .

Et alternativ:APPROX_COUNT_DISTINCT()

Hvis du arbejder med meget store datasæt, kan du overveje at bruge APPROX_COUNT_DISTINCT() i stedet for COUNT_BIG(DISTINCT ) i nogle tilfælde.

APPROX_COUNT_DISTINCT() returnerer en omtrentlig værdi i stedet for en præcis værdi. Det er dog designet til at være meget mere responsivt end COUNT_BIG() , så det kunne være nyttigt i perioder, hvor lydhørhed er vigtigere end præcision.

Det er designet til at returnere unikke, ikke-nul-værdier, så det ville kun være relevant på tidspunkter, hvor du normalt ville bruge DISTINCT klausul med COUNT_BIG() .

Bemærk også, at i skrivende stund APPROX_COUNT_DISTINCT() er i offentlig forhåndsvisningsstatus.


  1. Praktisk processorvalg til SQL Server 2014/2016 OLTP-arbejdsbelastninger

  2. Sådan installeres SSMS

  3. Indsæt CreatedBy og CreatedOn i eventuelle manglende datatabeller i SQL

  4. Oracle Kombiner flere kolonner til én