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.