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! 🙂