No SQL Server, o
COUNT_BIG()
A função retorna o número de itens encontrados em um grupo. Você pode usá-lo para descobrir quantas linhas estão em uma tabela ou conjunto de resultados. Esta função funciona de forma semelhante ao
COUNT()
função. A diferença é que COUNT()
retorna seu resultado como um int , enquanto COUNT_BIG()
retorna seu resultado como um bigint . Portanto,
COUNT_BIG()
pode ser útil se você espera que seu conjunto de resultados tenha um número muito grande de linhas (ou seja, maior que 2.147.483.647). Sintaxe
A sintaxe fica assim:
-- Aggregation Function Syntax COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } ) -- Analytic Function Syntax COUNT_BIG ( [ ALL ] { expression | * } ) OVER ( [] )
ALL
aplica a função agregada a todos os valores. Este é o valor padrão. DISTINCT
especifica que a função retorna o número de valores não nulos exclusivos. expression
é uma expressão de qualquer tipo. Funções agregadas e subconsultas não são suportadas na expressão. *
especifica que todas as linhas devem ser contadas e retornadas, incluindo linhas duplicadas e linhas que contêm valores nulos. COUNT(*)
não aceita parâmetros e não suporta o uso de DISTINCT
. Também não requer uma expressão parâmetro (porque não usa informações sobre nenhuma coluna em particular). OVER ( [ <partition_by_clause> ]
divide o conjunto de resultados produzido pelo FROM
cláusula em partições às quais a função é aplicada. Se não for especificado, a função trata todas as linhas do conjunto de resultados da consulta como um único grupo. Exemplo 1 – Uso básico
Aqui está um exemplo básico mostrando como essa função funciona:
USE WideWorldImportersDW; SELECT COUNT_BIG(*) AS 'Row Count' FROM Fact.[Order];
Resultado:
+-------------+ | Row Count | |-------------| | 231412 | +-------------+
Nesse caso, há 231.412 linhas no Fact.[Order] tabela.
Nesse caso, eu poderia ter usado
COUNT()
para retornar o mesmo resultado, porque a contagem de linhas é pequena o suficiente para um int lidar. Exemplo 2 – Um conjunto de resultados maior
O benefício real de usar
COUNT_BIG()
é quando seu conjunto de resultados é muito maior que o exemplo anterior. Exemplo:
SELECT COUNT_BIG(*) AS 'Row Count' FROM ReallyBigTable;
Resultado:
+-----------------+ | Row Count | |-----------------| | 9147483648 | +-----------------+
Nesse caso, a contagem de linhas é tão grande que um int não seria capaz de lidar com isso. Felizmente podemos usar
COUNT_BIG()
, porque retorna seu resultado como um bigint . Mais exemplos
Para mais exemplos, veja Como
COUNT()
Funciona no SQL Server. Esse artigo fornece mais exemplos do que os listados aqui, todos os quais também são aplicáveis a COUNT_BIG()
. Uma alternativa:APPROX_COUNT_DISTINCT()
Se você estiver trabalhando com conjuntos de dados muito grandes, considere usar
APPROX_COUNT_DISTINCT()
em vez de COUNT_BIG(DISTINCT )
em alguns casos. APPROX_COUNT_DISTINCT()
retorna um valor aproximado, em vez de um valor preciso. No entanto, ele foi projetado para ser muito mais responsivo do que COUNT_BIG()
, portanto, pode ser útil para momentos em que a capacidade de resposta é mais importante que a precisão. Ele foi projetado para retornar valores únicos e não nulos, portanto, seria relevante apenas para momentos em que você normalmente usaria o
DISTINCT
cláusula com COUNT_BIG()
. Observe também que, no momento de escrever
APPROX_COUNT_DISTINCT()
está no status de visualização pública.