Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Performance Inner join x SubQuery

Pessoal, bom dia.

As consultas abaixo, apresentam o mesmo resultado. Pensando em performance, qual é a mais indicada e por que? Obrigado.

SELECT 
   NOME, 
   BAIRRO 
FROM [TABELA DE CLIENTES]
WHERE BAIRRO IN (SELECT BAIRRO FROM [TABELA DE VENDEDORES])

SELECT 
  C.NOME,
  C.BAIRRO   
FROM [TABELA DE VENDEDORES] AS V INNER JOIN [TABELA DE CLIENTES] AS C ON C.BAIRRO = V.BAIRRO;  
2 respostas
solução!

Olá Leandro,

Tem uma maneira de analisarmos essa performance entre duas queries pelo próprio Microsoft Server Sql Management Studio, podemos visualizar o plano de execução de cada comando SQL (esse assunto será abordado no curso de SQL Server: Administração do Microsoft SQL Server 2017), assim podemos ver o custo de cada comando e entender qual é o melhor em termos de performance, nesse caso o primeiro comando tem um custo menor do que o segundo comando, então sendo assim, o primeiro comando é rápido em comparação com o segundo. Essa é a maneira de avaliar qual é a query mais rápida, isso é pelo fato de que você está realizando duas consultas simples, sendo uma dentro da outra, já com o INNER JOIN, é necessário percorrer todas as tabelas realizando comparativos para juntas as mesma e só depois realizar o filtro.

Porém no mundo real, existem outros fatores que podem influenciar na escolha de uma ou de outra, por vezes é mais fácil fazer consultas usando INNER JOIN do que fazendo SUB QUERY (sub consultas), porque tem a questão dos prazos a serem compridos, e sub consultas podem levar mais tempo para serem elaboradas.

Tem um artigo interessante sobre isso sobre Subquery vs Inner Join, se você quiser ver um pouco mais sobre qual é a melhor escolha.

Espero que tenha ajudado!

Oi Jonilson.

Wow. Excelente explicação. Vou estudar esse artigo. Obrigado.