[firebase-br] usando Fb2.5+win8.1->fugindo aos JOIN *** empre que possam ***

Mário Reis secretariadogeral em acra.pt
Seg Maio 16 21:46:10 -03 2016


Cantú,

Provavelmente nada disto será novo para Você os mais experimentados, mas 
tinha uma Store Procedure que me listava um ficheiro master de 5000 
apenas com a qual fazia um:
  For 
    SELECT
     ID,
     etc....
  FROM cliente c1
    INNER JOIN PESSOAS P1 ON P1.PESSOA_ID=c1.cliente_ID
    INNER JOIN MORADAS M1 ON M1.MORADA_ID=P1.PESSOA_ID
    INNER JOIN DISTRITO D1 ON D1.DD=M1.DD
    INNER JOIN CONCELHO C1 ON (C1.DD=M1.DD AND C1.CC=M1.CC )
    INNER JOIN FREGUESIA F1 ON (f1.DD=M1.DD AND f1.CC=M1.CC AND 
f1.FF=m1.FF)
    INNER JOIN CP7Postal C7 ON C7.CP7_ID=M1.CP7_ID
  WHERE 
    ... condições ...
 into  :ID ...lista de out_put   Do
begin

  mais uns selects ...Sum(Valor) .. Group By ID para ficheiro de 
detalhes
 calculando dívidas / pagamentos etc...

end;

tudo somado no loclahost nove a doze minutos.. remotamente 12* 3, 4 ou 5 
dependende da qualidade da rede que oscila bastante.
Bem assim não servia as minhas necessidades
Então parti os JOINS por multiplos select ... From <Cada Ficheiro> 
into...carregando os parametros de out_put.
Bem o resultado(velocidade) é qualquer coisa espantosa.
No localhost o out_put é instantâneo e remotamente varia entre 4 e 30 
segundos! Para nove minutos nem é preciso dizer-se mais nada...
Nas ligações só uso PK e FK.
Bom não sei se isto não merecerá uma reflexão já que tratando de INNER 
JOIN por chave indexadas o resultado deveria ser muito aproximado. 
Estarei enganadao?! Então porquê?
Obrigado










Mais detalhes sobre a lista de discussão lista