[firebase-br] Fwd: Select com NOT IN

Infosag infosag em terra.com.br
Seg Jul 20 01:46:39 -03 2009


cara é importantissimo que tenha o indice id_cidade_origem na tabela 
entrega, senao o not in na ira funcionar!

abs
----- Original Message ----- 
From: "glautter glauber" <glautterg em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, July 20, 2009 1:09 AM
Subject: Re: [firebase-br] Fwd: Select com NOT IN


Primeira dica eh se puder evitar subquery na cláusula where já eh um grande
passo,
lógico se não tiver jeito deve-se usar.
Pois para cada registro de CIDADE vai ser varrida a tabela ENTREGAS
isso quer dizer se a tabela CIDADE tiver 200 mil campos, será varrida 200
mil vezes a tabela de ENTREGAS e isso tende a aumentar o custo de acordo com
a inserção de dados.

mas para o seu caso veja se ajuda esta forma

SELECT DISTINCT CID.ID_CIDADE
     , CID.CIDADE
  FROM CIDADES CID, ENTREGAS ENT
 WHERE ENT.ID_CIDADE_ORIGEM =:cidade
   AND CID.ID_CIDADE <> ENT.ID_CIDADE_ORIGEM

esta foi a forma que eu entendi,

abraço,



2009/7/19 Magnun Oliveira <magnunoliveira em gmail.com>

>  Boa tarde .
>
> Tenho uma tabela de cidades e uma de entregas, e nela existe um campo
> id_cidade_origem e id_cidade ( para o destino ),  ambos foreign key de
> CIDADES.
>
> Gostaria de selecionar todas as cidades da tabela CIDADES que nao 
> receberam
> nenhuma entrega, de uma cidade de origem especificada por mim.
>
> Segue o sql:
>
> select cidades.id_cidade, cidades.cidade from cidades where
> cidades.id_cidade not in (select * from entregas where id_cidade_origem =
> :cidade)
>
> A consulta é efetuada com sucesso, porem demora bastante devido a
> quantidade
> de registros.
>
> Gostaria de ajuda pra otimizar esta consulta.
>
> ps: fiz o seguinte sql:
>
> select cidades.id_cidade, cidades.cidade from cidades where not exists
> (select * from entregas where id_cidade_origem = :cidade)
>
> Nao retorna nenhum registro, mesmo ocorrendo mais de 100 cidades que nao
> receberam entregas da cidade especificada no ":cidade".
>
> se tirar o not, retornam todas as cidades da tabela CIDADES.
>
> agradeço desde jah.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

E-mail verificado pelo Terra Anti-Spam.
Para classificar esta mensagem como spam ou não spam, visite
http://ecp.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY0MDQ0OTY1MCNwZXJtIXRlcnJhJjEsMTI0ODA2MzE5OS4zOTQ5MDAuOTgxOS5jYW1lbmFuYS5oc3QudGVycmEuY29tLmJyLDYxNjY=TerraMail
Verifique periodicamente a pasta Spam para garantir que apenas mensagens
indesejadas sejam classificadas como Spam.






Mais detalhes sobre a lista de discussão lista