SQL: COUNT X COUNT_BIG entenda a diferença
A partir da versão 2008 do SQL Server, desenvolvedores do SQL Server acharam por bem incluir uma função de agregação nova, o COUNT_BIG. Se você já se deparou com ela dentro de alguma Query T-SQL, pode ter se perguntado qual o impacto de se usar COUNT_BIG ao invés de COUNT.
Bem, a resposta mais lógica é a seguinte: a única diferença entre a função COUNT e a função COUNT_BIG é o tipo de retorno. Enquanto uma função COUNT retorna um INT, uma função COUNT_BIG retorna sempre um BigInt.
Mas no que isto pode afetar minhas Querys. É simples, por questão de precaução, os engenheiros do SQL Server incluíram esta função para prevenir que contagens de grandes valores gerassem erros por não suportar o tamanho do retorno, já que dentro da tabela de variáveis do SQL Server, um INT consegue comportar -2^31 (-2.147.483.648) a 2^31-1 (2.147.483.647) – 4 bytes, enquanto um BigInt -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807) – 8 bytes é bem superior. Talvez no seu dia a dia isso não faça muita diferença, mas para as Data-base que crescem vertiginosamente todos os dias é algo relevante.
Note ainda que, quando usamos Views Indexadas, uma das inúmeras restrições de criação é que devemos utilizar COUNT_BIG ao invés de COUNT, tudo isso como precaução do time de desenvolvimento.
E afinal de contas, por que simplesmente não alteraram a função COUNT? Esta é simples, uma mudança como estas iria ser totalmente intrusiva nas atualizações de versões do SQL Server e neste ponto tudo é muito bem pensado para ser o menos traumático possível.
Logo as seguintes Querys:
SELECT COUNT(1) SELECT COUNT_BIG(1)
São idênticas no seu retorno, apenas diferem no tipo de dados retornado.