Se você já estuda SQL há um tempo, provavelmente já ouviu algo assim:

“Use JOIN, não subquery.”
“Subquery é ruim.”
“JOIN é sempre melhor.”

O problema é que esse tipo de regra solta não ajuda na hora que você mais precisa: quando está diante de um problema real e precisa decidir como resolver.

Vamos organizar isso do jeito certo.


O erro começa quando a decisão vira regra decorada

Muita gente aprende assim:

  • vê exemplos de JOIN
  • vê exemplos de subquery
  • tenta memorizar quando usar cada um

Isso até funciona em exercícios.

Mas no trabalho real, o cenário é outro:

  • a pergunta não vem pronta
  • o banco é maior
  • a query precisa ser lida depois
  • alguém vai revisar o código

Nesse contexto, regra decorada cai rápido.


A pergunta errada: “Qual é melhor?”

JOIN e subquery não competem entre si.

Eles resolvem problemas diferentes dependendo do raciocínio.

A pergunta certa não é: “Qual é melhor?”

É: “O que eu estou tentando responder?”


Quando o JOIN faz mais sentido

JOIN funciona melhor quando:

  • você quer combinar informações
  • o resultado final depende de colunas de várias tabelas
  • as tabelas fazem parte da mesma linha lógica de resultado

Exemplo mental (sem código ainda):

“Quero listar clientes com o total de pedidos.”

Aqui:

  • cliente e pedido fazem parte da mesma resposta
  • o resultado final mistura informações

JOIN tende a ser a escolha natural.


Quando a subquery faz mais sentido

Subquery funciona melhor quando:

  • você precisa de um resultado intermediário
  • quer filtrar ou comparar com base em um conjunto
  • uma parte da lógica pode ser resolvida separadamente

Exemplo mental:

“Quero clientes que fizeram mais pedidos do que a média.”

Aqui, a média:

  • não é o resultado final
  • é um cálculo intermediário
  • ajuda a decidir quem entra ou não

Subquery (ou CTE) costuma deixar isso mais claro.


Clareza vale mais do que “performance teórica”

Outro mito comum:

“JOIN é sempre mais performático.”

Na prática:

  • bancos modernos otimizam muita coisa
  • diferenças pequenas raramente são o gargalo
  • query confusa custa mais do que query 5% mais lenta

Uma query clara:

  • é mais fácil de revisar
  • é mais fácil de ajustar
  • é mais difícil de errar

E isso pesa muito mais no dia a dia.


Um bom critério simples (e prático)

Se você precisa explicar sua query para outra pessoa, pergunte a si mesmo:

  • Essa parte é o resultado final?
    • 👉 JOIN costuma ajudar
  • Essa parte é só um critério para decidir algo?
    • 👉 Subquery (ou CTE) costuma ajudar

Não é regra absoluta.
É critério de raciocínio.


O problema não é JOIN nem subquery, é escrever sem pensar

A maioria das queries ruins não é ruim porque escolheu JOIN ou subquery.

Ela é ruim porque:

  • o problema não estava claro
  • o resultado esperado não foi definido
  • o código virou tentativa e erro

Quando o raciocínio vem primeiro, a escolha fica óbvia.


SQL bom é aquele que você entende depois

Um ótimo teste é esse:

“Se eu abrir essa query daqui a 3 meses, eu vou entender rápido o que ela faz?”

Se a resposta for não, o problema não é a sintaxe.

É a forma como o raciocínio foi organizado.


O próximo passo certo

Se você quer aprender a:

  • decidir melhor entre abordagens
  • escrever queries mais claras
  • praticar SQL com contexto real

O próximo passo natural é praticar cenários reais, não só exemplos soltos.

É exatamente isso que a Coleção A Arte da Query propõe:

  • perguntas reais
  • decisões de verdade
  • raciocínio antes do código

👉 Você pode conhecer a A Arte da Query aqui: 🎯 Coleção A Arte da Query

Tags: | | |

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solicitar exportação de dados

Use este formulário para solicitar uma cópia de seus dados neste site.

Solicitar a remoção de dados

Use este formulário para solicitar a remoção de seus dados neste site.

Solicitar retificação de dados

Use este formulário para solicitar a retificação de seus dados neste site. Aqui você pode corrigir ou atualizar seus dados, por exemplo.

Solicitar cancelamento de inscrição

Use este formulário para solicitar a cancelamento da inscrição do seu e-mail em nossas listas de e-mail.