pessoal, comecei a trabalhar com Oracle a quase 1 mês, e me disseram aqui no trabalho que não já a necessidade de se usar o comando JOIN pois "aumenta a complexidade de visualização do código" e que o hardware pra rodar o banco dá conta tranquilo etc etc, que o ganho de desempenho é insignificante pra ser usar JOIN ao invés de fazer as comparações diretamente na cláusula WHERE, eu trabalhei praticamente 3 anos com Firebird e nesse BD, a diferença de desempenho entre JOIN (LEFT JOIN, etc) e comparações no WHERE era GRITANTE!!, no Oracle existe algum otimizador que resolva esse problema pra que realmente não seja necessário o uso do JOIN?, como é isso no Oracle
porque eu sinceramente me acostumei usar JOIN mesmo, acho até que a Select fica até mais 'profissional'.
enfim, qual a opinião de vocês?
valeu
Dúvida sobre desempenho - Join/Where/(+)???
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Bem. "LEFT JOIN", "RIGHT JOIN" em oracle funciona, mas o padrão é usar o sinal de IGUAL pra joins e (+) pra OUTER-JOINS. Que eu saiba, é a mesma coisa usar o sinal de IGUAL ou os nomes JOIN, etc... No fundo , será feito a mesma coisa pelo otimizador.
Mesmo assim, se alguém tiver uma DEMONSTRAÇÃO disso, seria interessante!
Mesmo assim, se alguém tiver uma DEMONSTRAÇÃO disso, seria interessante!
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Qui, 16 Ago 2007 9:05 am
- Localização: são caetano do sul - SP
Keen On Oracle - DBA
o melhor teste para você seria usar um plano de execucao para saber qual select esta tendo um custo maior e gerar uma saida como essa:
Faça isso e vejo o caminho de acesso aos dados.....
Espero ter ajudado...
Cheers
set autotrace traceonly
SQL> SET AUTOTRACE TRACEONLY
SQL> select * from unidades where descricao like '%METRO%';
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=3 Card=1 Bytes=24)
1 0 TABLE ACCESS (FULL) OF 'UNIDADES' (TABLE) (Cost=3 Card=1 B
ytes=24)
Statistics
----------------------------------------------------------
1 recursive calls
0 db block gets
8 consistent gets
0 physical reads
0 redo size
876 bytes sent via SQL*Net to client
504 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
3 rows processed
Espero ter ajudado...
Cheers
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes