Sobes.tech
Senior

O que é semi-join e anti-join? Para que servem e onde aplicar?

sobes.tech IA

Resposta da IA

Semi-join — é uma operação em bancos de dados relacionais que devolve linhas da primeira tabela para as quais existem linhas correspondentes na segunda tabela, mas não devolve dados da segunda tabela. Simplificando, o semi-join verifica a existência de correspondências, mas não combina dados.

Anti-join — é o oposto do semi-join, devolve linhas da primeira tabela para as quais não existem linhas correspondentes na segunda tabela.

Para que servem?

  • Semi-join é útil quando se precisa verificar a existência de registros relacionados sem a necessidade de puxar dados da segunda tabela, economizando recursos.
  • Anti-join é usado para encontrar registros sem relações, por exemplo, para identificar registros "órfãos" ou excluir dados relacionados.

Onde aplicar?

  • Em análise para filtrar dados com base na presença ou ausência de relações.
  • Na otimização de consultas, para reduzir a quantidade de dados transmitidos.

Exemplo em SQL:

-- Semi-join: selecionar clientes que têm pedidos
SELECT DISTINCT c.*
FROM customers c
WHERE EXISTS (
  SELECT 1 FROM orders o WHERE o.customer_id = c.id
);

-- Anti-join: selecionar clientes sem pedidos
SELECT c.*
FROM customers c
WHERE NOT EXISTS (
  SELECT 1 FROM orders o WHERE o.customer_id = c.id
);