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 a mesma coisa, só que não.
Nenhum comentário:
Postar um comentário