SQL Server 2019 – Conhecendo as mudanças na estimativa de linhas em variáveis do tipo tabela

Visualizações: 154
Tempo de Leitura: < 1 minuto

Fala pessoal!

Nesse post de hoje, eu gostaria de compartilhar esse vídeo que acabei de fazer, demonstrando, na prática, as mudanças que tivemos no SQL Server 2019 em relação a estimativa de linhas em variáveis do tipo tabela, onde o otimizador de consultas sempre estimava 1 linha, independente do volume de dados, ao utilizar variáveis do tipo tabela, fazendo com que muitas vezes, fosse escolhido um operador não otimizado para o volume de dados real, prejudicando drasticamente a performance de consultas que utilizassem essas tabelas em memória.

Embora esse problema possa ser contornado utilizando OPTION(RECOMPILE), trace flag 2453 ou hints específicos para se utilizar um determinado operador, a versão 2019 do SQL Server introduziu um novo conceito para resolver isso de forma transparente, chamado compilação adiada de variável de tabela (table variable deferred compilation), que faz com que a compilação da estimativa da consulta seja adiada até a primeira execução real, num comportamento idêntico ao de tabelas temporárias, fazendo com que a quantidade de linhas estimadas seja bem mais próxima do volume real, ao invés da estimativa de apenas 1 linha, como nas versões anteriores.

Embora eu já tenha comentado sobre isso no artigo SQL Server 2019 – Lista de novidades e novos recursos e também no artigo Webcast – Comemoração 300 posts + Novidades do SQL Server 2019 (04/10/2018 – 21h), eu acabei não me aprofundando muito e demonstrando isso na prática, que é o meu intuito nesse vídeo.

É isso aí, pessoal!
Um forte abraço e até a próxima!