Contagens aproximadas com APPROX_COUNT_DISTINCT no SQL Server

0

Todos nós utilizamos consultas que usam COUNT DISTINCT para obter o número exclusivo de valores não nulos de uma tabela. Esse processo pode gerar um impacto perceptível no desempenho, especialmente para tabelas com milhões de registros ou contagens que não utilizam o melhor plano de execução possível. Muitas vezes, não há maneira de contornar isso. Para ajudar a mitigar essa sobrecarga, o SQL Server 2019 nos introduz a aproximação da contagem distinta com a nova função APPROX_COUNT_DISTINCT.

A função aproxima a contagem em uma precisão de 2% à contagem real de elementos, porém com um retorno muito mais rápido.

Vamos ver isso em ação.

--contagem 1
SET STATISTICS IO ON  
SELECT COUNT(DISTINCT([*])) as DISTINCTCOUNT  
FROM [dbo].[logins]  


--contagem 2
SELECT APPROX_COUNT_DISTINCT ( [*]) as APPROX_DISTINCTCOUNT  
FROM [dbo].[logins]  


Veja resultados da primeira execução e da segunda execução:

SQL Server Execution Times –CPU time = 4258 ms, elapsed time = 15285 ms.
SQL Server Execution Times –CPU time = 6398 ms, elapsed time = 3887 ms.


Você pode ver que o tempo decorrido é significativamente menor! Grande melhoria usando esta nova função.

Veja mais exemplos aqui

Você pode fazer o download da versão prévia do SQL Server 2019 aqui

Um grande abraço à todos! 🙂

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com