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.