Escolar Documentos
Profissional Documentos
Cultura Documentos
SUBQUERY
VS
INNER JOIN
https://medium.com/@gugoiscardoso
1
SUBQUERY vs INNER JOIN
Como podemos ver acima, subquery é basicamente uma instrução sql dentro da outra.
Apesar de ser um exemplo simples, representa com clareza o que é uma subquery.
Inner Join
Quando comecei a estudar banco de dados, por diversas vezes fiz o inner join, com a
intenção de “juntar” os dados. Essa definição ficou na minha cabeça e sempre me pareceu
vaga.
Um belo dia, conheci um professor que resolveu iluminar meu caminho nas artes do join.
Segue abaixo, a imagem milagrosa:
2
SUBQUERY vs INNER JOIN
Figura 2 : Relacionamentos
Nesse ponto, criamos a tabela Departamento. Nela, temos 3 colunas: Id, Nome e
Descrição. Em seguida criamos a coluna IdDepartamento na tabela Funcionário
(com FK) para realizarmos o join:
-- retorna uma lista de funcionários com seus respectivos
departamentos
SELEC * FROM funcionario F
INNER JOIN departamento D ON F.iddepatamento = D.id
3
SUBQUERY vs INNER JOIN
Figura 4: Subquery
Figura 3: Inner Join
Dessa maneira, conseguimos comparar as duas querys e tomar uma decisão tecnológica
considerada adequada.
Até esse ponto, a análise é simples pois levamos em consideração apenas a performance.
Mas consideraremos agora o tão importante prazo, que na minha opinião será o fator decisivo
na sua escolha.
É viável investir tempo na escrita de querys de maneiras diferentes para avaliar performance ? Será que
não é um tempo que pode fazer falta no futuro ?
Então, defendo que o dia a dia reflete diretamente nas nossas decisões e que o tempo, no
final, será o fator mais relevante. Sem tempo para analisar, eu faço da maneira que é mais
confortável pra mim. Nesse contexto, complexidade da sintaxe e o tempo que leva pra escrever
uma query são as características que considero decisivas.
Acho que o mais importante, em contextos que você precisa comparar e tomar decisões
em relação à tecnologias, é utilizar do bom senso pra conseguir analisar bem a situação e
chegar a uma solução bacana.