Neste artigo estarei falando um pouco sobre otimização de consultas e nada melhor do que falarmos do otimizador de consultas SQL Server que é responsável pelo plano de execução das nossas consultas.
O que é o otimizador de consultas?
Respondendo grosseiramente ele é o responsável por descobrir o melhor caminho para nossa consulta, dentro das variáveis ou “estimativas” e “estatísticas”.
Ou seja, ele cria o plano de execução com o melhor caminho para retornar nossos dados e quais operadores serão utilizados.
Quando realizamos uma consulta no SQL Server o otimizador de consultas tem diversas opções para retornar os dados, mas como sempre digo o que vale não é retornar os dados de qualquer forma é retornar os dados da melhor forma e com o menor custo e para isso o otimizador de consultas leva alguns detalhes em consideração:
· Filtros utilizados nas consultas
· Índices
· Estatísticas
· Paralelismo
A fase de algebrizer é onde o otimizador de consultas entra em ação, neste artigo não vou falar sobre as fases de uma instrução SQL e no final da fase algebrizer o otimizador de consultas retorna um plano para execução.
Nem sempre podemos dizer que o plano do otimizador de consultas é o melhor para o nosso retorno, há algumas formas de forçarmos a utilização de alguns operadores para uma melhor otimização.
Importante lembrar que o otimizador de consulta leva em consideração as estatísticas para gerar o plano, sendo que caso seu servidor esteja com a opção de AUTO CREATE STATISTICS esteja como ON ele pode gerar uma estatísticas ou então atualizar uma estatística.
Existem algumas dicas que posso deixar aqui para quem quer melhorar a performance de suas consultas:
· Utilize seus índices da melhor forma
Tente sempre utilizar seus índices como filtros ou junções para melhor seletividade
· Mantenha suas estatísticas atualizadas
As estatísticas de consultas ou índices trazem informações importantes para o otimizador de consultas como estimativa de retorno de linhas, utilização de CPU, I/O e etc..
· Dividir consultas
Quando temos consultas complexas e dividimos por partes podemos aplicar planos de otimização mais eficientes.
· Verifique o plano de execução antes de executar
Sempre que possível verifique o plano de execução ele poderá te revelar muita coisa sobre sua consulta e como dica a leitura é realizada da direita para a esquerda.