[firebase-br] otimizador de consultas do firebird

Josauro S.J. josauro em casasoft.inf.br
Qui Nov 18 18:32:22 -03 2004


Primeiramente esse estilo de JOIN é do padrao SQL-89, em uma sintaxe antiga, chamada de Join implicito, essa sintaxe so permite o INNER JOIN (onde voce faz relacionamento entre todos os registro de todas as tabelas envolvidas), voce nao pode determinar outra forma de JOIN com ela como LEFT JOIN (muito melhor na maioria dos casos) ou RIGHT JOIN ...,  essa sintaxe não tem suporte em alguns drives de acesso, podendo ser incompativel, provavelmente sera eliminada a compatibilidade em futuras versões do FB, usando o JOIN explicito voce tem maior clareza em seu código evitando erros, e facilitando o otimizador de código do FB.


Josauro S.J.
Diretor
josauro em casasoft.inf.br
----- Original Message ----- 
From: Alessandro Francisco 
To: FireBase 
Sent: Thursday, November 18, 2004 6:07 PM
Subject: Re: [firebase-br] otimizador de consultas do firebird


Meu amigo, qual o motivo de nunca usar essa sintaxe de joins???

[s]

Alessandro

Josauro S.J. wrote:

>A primeira coisa é nunca faça join com essa sintaxe apesar dela funcionar é terminantemente desrecomendada é uma sintaxe do SQL-89,  use JOIN para unir duas ou mais tabelas
>
>select *
>from  cidades
>LEFT JOIN pessoas
>on (cidade.codigocidade = pessoas.codigocidade)
>where  cidades.codigocidade = 10
>
>
>Josauro S.J.
>Diretor
>josauro em casasoft.inf.br
>----- Original Message ----- 
>From: Maglan Cristiano Diemer 
>To: FireBase 
>Sent: Thursday, November 18, 2004 6:30 PM
>Subject: [firebase-br] otimizador de consultas do firebird
>
>
>Pessoal,
>
>Suponha duas tabelas relacionadas.
>
>create table PESSOAS {
>   codigopessoa integer not null, (chave primaria)
>   nome varchar(100),
>   codigocidade integer (chave estrangeira)
>}
>
>create table CIDADES {
>   codigocidade integer not null, (chave primaria)
>   nome varchar(100)
>}
>
>
>Eu quero saber se o Interbase interpreta
>os seguintes selects da mesma forma
>
>1)
>select *
>from pessoas, cidades
>where pessoas.codigocidade = cidades.codigocidade
>and cidades.codigocidade = 10
>
>2)
>select *
>from pessoas, cidades
>where pessoas.codigocidade = 10
>and cidades.codigocidade = 10
>
>
>Esse é um exemplo pequeno. Mas voces entenderam, né?
>Li no livro sobre otimizacoes em bancos SQL, que o
>segundo select (apesar de trazer o mesmo resultado
>do primeiro) é bem mais rapido do que o primeiro.
>
>Penso que o otimizador do banco poderia cuidar disso, não ?
>
>Ou voces ainda poderiam mostrar outra alternativa que
>seja mais rapida ainda ?
>
>O que voces tem a dizer sobre isso ?
>
>Maglan
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>  
>



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br




Mais detalhes sobre a lista de discussão lista