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
  

Mensagemem Qua, 08 Set 2010 8:31 am

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:

Código: Selecionar todos
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:

Código: Selecionar todos
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
huntersc
Localização: FLORIANOPOLIS - SC

Mensagemem Qua, 08 Set 2010 9:22 am

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.
paulochagas
Localização: São Paulo - SP

Paulo Chagas Filho
__________________

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

Mensagemem Qua, 08 Set 2010 11:59 am

beleza..

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

valeu
huntersc
Localização: FLORIANOPOLIS - SC

Mensagemem Qua, 08 Set 2010 1:55 pm

A principio o plano de execução seria o mesmo quando utilizadas os mesmos indices/colunas.
gfkauer
Localização: Sapiranga - RS

Quem falou que programar era fácil??

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

Acessem: www.gfkauer.com.br

Mensagemem Qua, 08 Set 2010 2:02 pm

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??
victorhugomuniz
Localização: Rio de Janeiro - RJ

Jesus está voltando, volte antes para Ele.

Imagem JavaBlackBelt

Mensagemem Qui, 09 Set 2010 10:31 am

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.
fsitja
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


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem