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.
inner join x subquery
- heraldoaraujo
- Rank: Programador Pleno
- Mensagens: 41
- Registrado em: Dom, 19 Fev 2012 12:10 pm
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
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.
Mas depende da situação dos dados do banco, dos índices, dos filtros e campos, da quantidade de dados nas duas tabelas.
- fbifabio
- Moderador
- Mensagens: 199
- Registrado em: Ter, 22 Fev 2011 1:51 pm
- Localização: São Paulo - SP
- Contato:
Fábio Prado
www.fabioprado.net
www.fabioprado.net
@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/ser ... htm#i55054) que transforma a subquery em inner join.
[]s
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/ser ... htm#i55054) que transforma a subquery em inner join.
[]s
- adrianoturbo
- Moderador
- Mensagens: 393
- Registrado em: Qui, 20 Mar 2008 4:09 pm
- Localização: Brasília
Adriano Alves
---Para cada problema dificil existe uma solução simples.----
---Para cada problema dificil existe uma solução simples.----
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.
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Seg, 18 Nov 2013 2:24 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.
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.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes