Subquery ou JOINS? Vocês utilizam? Quando?
03/09/2018
0
Como vocês fazem quando querem fazer uma consulta mais complexa, que exija talvez a seleção em duas ou mais tabelas?
Hoje a gente sabe que pode utilizar tanto JOINS quanto subqueries, mas sempre tem aquela dúvida de qual deles utilizar. Será que preciso mesmo fazer uma junção entre as minhas tabelas ou posso resolver essa query apenas usando subquery? Deixando de certo modo a consulta mais estruturada?
Pablo Carvalho
Post mais votado
03/09/2018
Eu utilizo de forma mista, vejo o que eu preciso especificamente, em alguns casos a subquery acaba sendo a melhor pedida, como por exemplo o ultimo registro de data de uma compra de um cliente que não tenha nf por exemplo, sei que ficou meio confuso, mas foi apenas um exemplo que as vezes vc não consegue fazer essa parametrização no join.
Eu tenho usado Outer Apply para fazer a substituição das duas situações, por se tornar em varias ocasiões mais performático que os dois, e vc acaba com um select que faz as duas situações de uma unica vez.
Mas o que precisa ser considerado sempre, eh o desempenho de um e de outro.
Espero ter ajudado.
Atenciosamente,
Alex Lekao
Mais Posts
03/09/2018
Luiz Santos
Cada caso é um caso.
A pergunta que você precisa fazer e, preciso retornar colunas de mais de uma tabela?
Se a resposta for sim, ai precisa usar o JOIN.
Se precisar da segunda query apenas com um filtro para a primeira, ai usa o EXISTS.
Espero ter ajudado.
Grande abraço..
Luiz Fernando
03/09/2018
Caio Rolla
04/09/2018
Aylan Boscarino
04/09/2018
Estevão Dias
Tem também aquele cenário no qual você precisa pegar uma coluna de outra tabela e essa coluna deve ser gerada dinamicamente, com AVG, SUM, etc...
Nesse casos não dá pra gente gerar com JOIN, né? Daí algumas pessoas costumam fazer processamento no backend, passando os dados por um loop, como for e tal, pra calcular totais, médias, enfim
Você também opta por resolver dessa forma? Sem subquery, no backend?
05/09/2018
Daniel Araújo
05/09/2018
Estevão Dias
Você tem encontrado muita diferença no plano de execução entre join ou subquery?
A comunidade costuma dizer que a diferença é imperceptível e eu mesmo nunca vi uma aplicação parar por conta disso, a não ser que a query tenha algum erro.
10/09/2018
Aylan Boscarino
10/09/2018
Caio Rolla
11/09/2018
Estevão Dias
12/09/2018
Aylan Boscarino
Uma dúvida que me acabou de surgir, existe algum limite para a recursividade de subquerys dentro de outras subquerys?
17/09/2018
Jorge Vaz
17/09/2018
Luiz Santos
Depende da complexidade do que você quer.
Do banco de dados que está usando.
Por exemplo, em SQL Server, você acabaria tendo que usar uma tabela temporária.
No Oracle um cursor.
Talvez até uma procedure.
É complicado dar uma única resposta que sirva para qualquer cenário.
Grande abraço
Luiz Fernando
Clique aqui para fazer login e interagir na Comunidade :)