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

Come funziona COUNT_BIG() in SQL Server

In SQL Server, il COUNT_BIG() la funzione restituisce il numero di elementi trovati in un gruppo. Puoi usarlo per scoprire quante righe ci sono in una tabella o in un set di risultati.

Questa funzione funziona in modo simile a COUNT() funzione. La differenza è che COUNT() restituisce il risultato come int , mentre COUNT_BIG() restituisce il risultato come bigint .

Pertanto COUNT_BIG() potrebbe tornare utile se prevedi che il tuo set di risultati abbia un numero molto elevato di righe (cioè maggiore di 2.147.483.647).

Sintassi

La sintassi è questa:

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

ALL applica la funzione di aggregazione a tutti i valori. Questo è il valore predefinito.

DISTINCT specifica che la funzione restituisce il numero di valori non nulli univoci.

expression è un'espressione di qualsiasi tipo. Le funzioni aggregate e le sottoquery non sono supportate nell'espressione.

* specifica che tutte le righe devono essere contate e restituite, comprese le righe duplicate e le righe che contengono valori Null. COUNT(*) non accetta parametri e non supporta l'uso di DISTINCT . Inoltre non richiede un'espressione parametro (perché non utilizza informazioni su una colonna in particolare).

OVER ( [ <partition_by_clause> ] divide il set di risultati prodotto dal FROM clausola in partizioni a cui viene applicata la funzione. Se non specificata, la funzione tratta tutte le righe del set di risultati della query come un unico gruppo.

Esempio 1 – Utilizzo di base

Ecco un esempio di base che mostra come funziona questa funzione:

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

Risultato:

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

In questo caso ci sono 231412 righe in Fact.[Ordine] tabella.

In questo caso, avrei potuto usare COUNT() per restituire lo stesso risultato, perché il conteggio delle righe è sufficientemente piccolo per un int da gestire.

Esempio 2:un set di risultati più grande

Il vero vantaggio dell'utilizzo di COUNT_BIG() è quando il tuo set di risultati è molto più grande dell'esempio precedente.

Esempio:

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

Risultato:

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

In questo caso, il conteggio delle righe è così grande che un int non sarebbe in grado di gestirlo. Fortunatamente possiamo usare COUNT_BIG() , perché restituisce il risultato come bigint .

Altri esempi

Per altri esempi, vedi Come COUNT() Funziona in SQL Server. Quell'articolo fornisce più esempi di quelli elencati qui, tutti applicabili anche a COUNT_BIG() .

Un'alternativa:APPROX_COUNT_DISTINCT()

Se stai lavorando con set di dati molto grandi, potresti prendere in considerazione l'utilizzo di APPROX_COUNT_DISTINCT() invece di COUNT_BIG(DISTINCT ) in alcuni casi.

APPROX_COUNT_DISTINCT() restituisce un valore approssimativo, anziché un valore preciso. Tuttavia, è progettato per essere molto più reattivo di COUNT_BIG() , quindi potrebbe essere utile nei momenti in cui la reattività è più importante della precisione.

È progettato per restituire valori univoci e non nulli, quindi sarebbe rilevante solo per le volte in cui normalmente utilizzeresti il ​​DISTINCT clausola con COUNT_BIG() .

Tieni inoltre presente che, al momento della scrittura di APPROX_COUNT_DISTINCT() è in stato di anteprima pubblica.