Página 1 de 1

Diferença Entre os Codigos SQL

Enviado: Qua, 08 Set 2010 8:31 am
por huntersc
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

Enviado: Qua, 08 Set 2010 9:22 am
por 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.

Enviado: Qua, 08 Set 2010 11:59 am
por huntersc
beleza..

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

valeu

Enviado: Qua, 08 Set 2010 1:55 pm
por gfkauer
A principio o plano de execução seria o mesmo quando utilizadas os mesmos indices/colunas.

Enviado: Qua, 08 Set 2010 2:02 pm
por victorhugomuniz
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??

Enviado: Qui, 09 Set 2010 10:31 am
por fsitja
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.