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.