Olá a todos,

Hoje vou mostrar uma dica simples mas que é muito útil no momento de decidir sobre qual a melhor consulta adotar em seu sistema quando estivermos usando o SQLServer.

Cenário

Recentemente um amigo me pediu ajuda para uma situação que nos servirá de cenário.

Ele possui um sistema para o qual ele estava construindo um painel com indicadores, porém seu software utiliza um ORM, e ele precisava decidir entre usar 6 “selects” para recuperar os dados usando criteria, ou fazer um comando SQL/HQL único.

Em outro post já mostrei como o uso de HQL ou SQL pontualmente pode trazer benefícios de desempenho ao software.

Como comparar as consultas

O Management Studio e o Visual Studio, contam com um recurso que nos exibe os planos de execução usados para rodar um comando SQL. Quando colocamos duas consultas juntas, a visualização nos fornece o custo % da execução de cada um dos comandos.

Este recuso pode ser usado para comparar duas consultas que trazem o mesmo resultado. Então basta clicar no botão mostrado na imagem abaixo ou dar um CTRL+L (menu: “Query” item: “Display Estimated Execution Plan”), que o plano de execução será exibido.

 

SQL

Neste exemplo, a primeira consulta (as 6 consultas) custa mais do que o dobro em relação a segunda (consulta única com o join). Estes valores são variáveis conforme seu cenário, no caso do meu amigo, a diferença foi de 87% para 13%.

Conclusão

Não importa se as consultas são equivalentes (se usam os mesmos índices ou mesmos campos da clausura where) ou não, se ambas trazem o mesmo resultado esta verificação pode lhe ajudar a decidir sobre qual a melhor abordagem em relação aos dados.

E você ainda pode usar o resultado para comparar os diagramas do plano de execução para aprender mais, de forma que quando validar um plano de execução para encontrar pontos de melhoria, você tenha mais familiaridade com os elementos e suas influencias.