sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo funciona COUNT_BIG() en SQL Server

En SQL Server, el COUNT_BIG() La función devuelve el número de elementos encontrados en un grupo. Puede usarlo para averiguar cuántas filas hay en una tabla o conjunto de resultados.

Esta función funciona de manera similar a COUNT() función. La diferencia es que COUNT() devuelve su resultado como un int , mientras que COUNT_BIG() devuelve su resultado como bigint .

Por lo tanto, COUNT_BIG() podría ser útil si espera que su conjunto de resultados tenga una gran cantidad de filas (es decir, más grande que 2,147,483,647).

Sintaxis

La sintaxis es así:

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

ALL aplica la función agregada a todos los valores. Este es el valor predeterminado.

DISTINCT especifica que la función devuelve el número de valores no nulos únicos.

expression es una expresión de cualquier tipo. Las funciones agregadas y las subconsultas no se admiten en la expresión.

* especifica que se deben contar y devolver todas las filas, incluidas las filas duplicadas y las filas que contienen valores nulos. COUNT(*) no toma parámetros y no admite el uso de DISTINCT . Tampoco requiere una expresión parámetro (porque no usa información sobre ninguna columna en particular).

OVER ( [ <partition_by_clause> ] divide el conjunto de resultados producido por FROM cláusula en particiones a las que se aplica la función. Si no se especifica, la función trata todas las filas del conjunto de resultados de la consulta como un solo grupo.

Ejemplo 1:uso básico

Aquí hay un ejemplo básico que muestra cómo funciona esta función:

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

Resultado:

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

En este caso hay 231412 filas en Fact.[Order] mesa.

En este caso, podría haber usado COUNT() para devolver el mismo resultado, porque el recuento de filas es lo suficientemente pequeño para un int manejar.

Ejemplo 2:un conjunto de resultados más grande

El beneficio real de usar COUNT_BIG() es cuando su conjunto de resultados es mucho más grande que el ejemplo anterior.

Ejemplo:

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

Resultado:

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

En este caso, el recuento de filas es tan grande que un int no sería capaz de manejarlo. Afortunadamente podemos usar COUNT_BIG() , porque devuelve su resultado como bigint .

Más ejemplos

Para obtener más ejemplos, consulte Cómo COUNT() Funciona en SQL Server. Ese artículo proporciona más ejemplos de los que se enumeran aquí, todos los cuales también son aplicables a COUNT_BIG() .

Una alternativa:APPROX_COUNT_DISTINCT()

Si está trabajando con conjuntos de datos muy grandes, podría considerar usar APPROX_COUNT_DISTINCT() en lugar de COUNT_BIG(DISTINCT ) en algunos casos.

APPROX_COUNT_DISTINCT() devuelve un valor aproximado, en lugar de un valor preciso. Sin embargo, está diseñado para responder mucho mejor que COUNT_BIG() , por lo que podría ser útil en momentos en que la capacidad de respuesta es más importante que la precisión.

Está diseñado para devolver valores únicos, no nulos, por lo que solo sería relevante para los momentos en los que normalmente usaría DISTINCT cláusula con COUNT_BIG() .

También tenga en cuenta que, al momento de escribir APPROX_COUNT_DISTINCT() está en estado de versión preliminar pública.