Aprenda PL/SQL

inner join x subquery

Tuning de Banco, Tuning de SQL, Ferramentas de tuning
  

Mensagemem Sex, 26 Set 2014 2:20 pm

Boa tarde,

Alguém sabe me dizer qual é mais performático inner join ou uma consulta com subquery?
Obs: irei trazer somente atributos(coluna) da 1° tabela.
heraldoaraujo

Mensagemem Seg, 29 Set 2014 5:28 pm

Em regra geral seria o próprio join, pois usaria os índices específicos das 2 tabelas.
Mas depende da situação dos dados do banco, dos índices, dos filtros e campos, da quantidade de dados nas duas tabelas.
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.

Mensagemem Sex, 06 Mar 2015 5:05 pm

@heraldoaraujo,

Na maior parte das situações o inner join é mais performático, mas é importante ter ciência de que existem sim algumas situações em que é melhor executar uma subquery. Atualmente você nem precisa mais se preocupar muito com isso pois se você escrever uma subquery onde um INNER JOIN seria melhor, o Otimizador realiza uma operação chamada "Subquery Unnesting" (http://docs.oracle.com/cd/B19306_01/server.102/b14211/optimops.htm#i55054) que transforma a subquery em inner join.

[]s
fbifabio
Localização: São Paulo - SP

Fábio Prado
www.fabioprado.net

Mensagemem Sex, 13 Mar 2015 10:26 am

Mais uma vez a cautela pede que se utilize a palavra :depende ,pois cada cenário especifico depende da situação,particularmente utilizo inner join por ser mais performático nas maiorias das situações e em casos extremos de querys complexas o caminho é a subquery mesmo.
adrianoturbo
Localização: Brasília

Adriano Alves
---Para cada problema dificil existe uma solução simples.----

Mensagemem Ter, 26 Mai 2015 6:58 pm

Boa noite,

Apenas uma dica com relação a subquery. Evite o "in" e "not in" pois estes não usam índice e dê preferência ao "exists" ou "not exists".

Espero ter ajudado.
Michel Pessoa



Voltar para DBA Tuning

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes