Diferença Entre os Codigos SQL

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
huntersc
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Sex, 12 Mar 2010 3:11 pm
Localização: FLORIANOPOLIS - SC

Bom Dia Pessoal,

Gostaria da ajuda de vocês para saber se existe diferença entre os 2 SQL a baixo..

Vamos lá SQL 1 DO SISTEMA:

Selecionar tudo

SELECT COLUNA 1,COLUNA 2... FROM TABELA 1, TABELA 2 , TABELA 3
WHERE TABELA 1 = TABELA 2 AND TABELA 2 = TABELA 3
SQL QUE EU acho MAIS CORRETO:

Selecionar tudo

SELECT COLUNA1, COLUNA2;;; FROM TABELA1
INNER JOIN TABELA2 ON TABELA2 = TABELA1
INNER JOIN TABELA3 ON TABELA3 = TABELA2
Existe diferença entre os 2 sql? Usando SET TIMING ON
retornou o mesmo tempo... Tem alguma explicação? Qual seria melhor de usar ? por que?

Obrigado

Jr
paulochagas
Moderador
Moderador
Mensagens: 86
Registrado em: Qua, 15 Mar 2006 2:46 pm
Localização: São Paulo - SP
Paulo Chagas Filho
__________________

Analista Funcional / Desenvolvedor Oracle EBS
MSN - paulochagas@hotmail.com
Gtalk - pachafi@gmail.com
Skype - paulochagas

Oi Amigo,

As queries tem a mesma semantica embora ocorra a diferença na sintaxe
a segunda adota o padrão SQL ANSI, que está sendo recomendado pela Oracle desde a versão 11g (se não me engano).
A primeira embora seja mais difundida entre programadores oracle tende a cair em desuso com o tempo.
Favor amigos me corrijam se eu estiver errado, mas é essa minha impressão.
huntersc
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Sex, 12 Mar 2010 3:11 pm
Localização: FLORIANOPOLIS - SC

beleza..

Mais a respeito de performance, as 2 executam da mesma maneira? Ou a 2 forma que o oracle recomenda é mais rapida..

valeu
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

A principio o plano de execução seria o mesmo quando utilizadas os mesmos indices/colunas.
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

paulochagas escreveu:Oi Amigo,

As queries tem a mesma semantica embora ocorra a diferença na sintaxe
a segunda adota o padrão SQL ANSI, que está sendo recomendado pela Oracle desde a versão 11g (se não me engano).
A primeira embora seja mais difundida entre programadores oracle tende a cair em desuso com o tempo.
Favor amigos me corrijam se eu estiver errado, mas é essa minha impressão.
alguém teria algum material da oracle recomendando a sintaxe em questão??
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Na documentação há a seguinte recomendação:
Oracle recommends that you use the FROM clause OUTER JOIN syntax rather than the Oracle join operator. Outer join queries that use the Oracle join operator (+) are subject to the following rules and restrictions, which do not apply to the FROM clause OUTER JOIN syntax:
Desde o Oracle 9i existe a recomendação, conforme os links abaixo:
http://download.oracle.com/docs/cd/B105 ... tm#2054625

http://download.oracle.com/docs/cd/E118 ... SQLRF52354

Eu, particularmente, prefiro a sintaxe ANSI pois ela distingue claramente e separa as condições de JOIN de cada tabela de filtros do WHERE.

Muita gente reclama que na sintaxe ANSI há muita verborragia... mas acho que todo cidadão de bom senso sabe que na sintaxe "antiga" (tudo no where) é preciso usar muito mais comentários no Where para separar o que vem de onde e qual condição é usada por qual tabela nos joins...

Enquanto isso, a sintaxe ANSI é mais auto-explicativa e explícita.
Responder
  • Informação
  • Quem está online

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