[firebase-br] Escolha entre Sub-Selects ou Joins.

Marcelo Fortes ibfirebird em yahoo.com
Ter Mar 13 15:25:15 -03 2007


É por aí, a utilização de Joins e sub-selects são análogas, isto é, você pode na maioria dos casos obter o mesmo resultado, salvo que em subselects há uma maior flexibilidade em que as vezes os joins não alcançam, mas no geral até onde eu observei os Joins são um pouco mais rápidos.

Leia este post é elucidativo:
http://mail.firebase.com.br/pipermail/lista_firebase.com.br/2005-July/016323.html

Marcelo Fortes.

terossi <terossi em lightsystemsoft.com.br> wrote:     certo, intao pelo que disse só é recomendado utilizar sub-select quando 
necessito que ele execute alguma operação onde nao posso executar com o join 
é isso? caso contrario sempre utilizar join?

"Marcelo Silva"  escreveu 
na mensagem news:022301c75c3c$2c755a70$9d00a8c0 em terminal15lest...
Eu mudaria sua expressão de "cada caso é um caso" para "cada função é para
um caso"
JOIN serve para Juntar tabelas
SUB-SELECT serve para selecionar registros em determinadas situações

Exmplo: JOIN

SELECT
  CLI.NOME,
  CID.CIDADE
FROM TAB_CLIENTES CLI
INNER JOIN CIDADES CID ON(CID.COD_CID = CLI.COD_CID)

Neste select traremos as os clientes e as cidades onde moram os clientes um
sub-select aí não seria apropriado a pesar de funcionar

Exemplo: SUB-SELECT

SELECT
  P.PROD_DESC
  SELECT VALOR FROM ITENS WHERE (COD_PROD = P.COD_PROD) AS TOTAL
FROM PEDIDOS P

Neste traremos os produtos e seu valor total somando o valor dos Itens no
SubSelect

Neste segundo caso não daria pra usar o JOIN pois não seria uma junção de
tabelas e sim selects distintos

Espero ter ajudado...


----------------------
Marcelo Silva
(11) 9693-4251
(11) 6723-3106 - LESTCRED
MSN: marcvan em ig.com.br





----- Original Message ----- 
From: "Rubens J Rodrigues" 

To: 

Sent: Thursday, March 01, 2007 4:37 PM
Subject: [firebase-br] Escolha entre Sub-Selects ou Joins.


Pessoal,

Sei que cada caso é um caso, e que mais ainda tudo depende do resultado
dos testes feitos, mas, tenho uma dúvida :

Qual seria o melhor método, usar subselects ou joins ? ex.:

  1) Se eu faço um select na tabela de clientes, e precisar buscar em
qual regiao de ele pertence, quanto ele já comprou, quanto já foi
bonificado.

  a) Com sub-select :
     select  clientes.codigo,
             clientes.nome,
             (select nomeregiao from regioes where
regioes.codregiao=clientes.codigo),
             (select coalesce(sum(notafsaid.vlatend),0) from notafsaid
where notafsaid.codcli=clientes.codigo where tipovenda=1),
             (select coalesce(sum(notafsaid.vlatend),0) from notafsaid
where notafsaid.codcli=clientes.codigo where tipovenda=5)

     from
             clientes.


  b) Com Join
     select  clientes.codigo,
             clientes.nome,
             regioes.nomeregiao,
             (select coalesce(sum(notafsaid.vlatend),0) from notafsaid
where notafsaid.codcli=clientes.codigo where tipovenda=1),
             (select coalesce(sum(notafsaid.vlatend),0) from notafsaid
where notafsaid.codcli=clientes.codigo where tipovenda=5)

     from
             clientes
             left outer join regioes on
clientes.codregiao=regiores.codregiao.

Obrigado



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


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




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

 
---------------------------------
8:00? 8:25? 8:40?  Find a flick in no time
 with theYahoo! Search movie showtime shortcut.


Mais detalhes sobre a lista de discussão lista