[firebase-br] Firebird e estrutura Mestre-Detalhe 4 níveis

Denis Pereira Raymundo denisuba em gmail.com
Seg Ago 15 13:34:41 -03 2011


Sinto informar, mas essa estrutura vai demorar mesmo. Se você mandar
monitorar as SQLs vai ver acontecendo:

Para cada registro da primeira tabela é executado um comando sql para buscar
os registros da segunda e
para cada registro da segunda tabela é executado um comando sql para buscar
os registros da terceira...

Se cada tabela tem uns 1000 registros, e vamos supor cada um tenha uns 5
detalhes relacionados, você terá algo como:
1000 comandos no primeiro nível +
1000*5 (5000 para o segundo nível) +
1000*5*5 (25000 para o terceiro nível) +
1000*5*5*5 (125000 para o quarto nível)
=156.000 comandos sql

Se cada comando tiver em torno de 200 bytes (o que eu duvido), só de envio
de comandos sql ao servidor será próximo de 31 MB. (Já viu que não dá para
monitorar essas sqls em um componente TMemo :-) tem que ser em arquivo).

Isso sem contatar todo o empacotamento de mensagens de rede, processamento
do firebird, retorno de dados.

Sugestão: Se você trouxer todos os 1000 registros de cada tabela de uma só
vez e fizer o relacionamento depois (usando as propriedades MasterSource e
MasterFields do ClientDataSet) aposto que traz tudo com mesmo de 1 minuto. E
a funcionalidade para o usuário será a mesma.

Abraços

Denis Pereira Raymundo
Especialista em Gestão e Manutenção de Tecnologia da Informação
Bacharel em Ciência da Computação
Licenciado em Matemática
Técnico em Processamento de Dados

"GutembergAdv"  escreveu na notícia da 
mensagem:CAN4+x1BwNmCEEmFOdNLb5L+DoJc1=rgb07=pVth8_SfJT39rNg em mail.gmail.com...

Olá a todos!
Uso Firebird 2.5 + ODBC + Delphi 7 + DBExpress
Não se esta questão se adequa melhor nesta lista ou na lista do Delphi, se
for o caso deste último, me avisem, por favor.
Estou montando uma estrutura mestre-detalhe com 4 níveis, da seguinte forma:
a tabela A é mestre de B, que é mestre de C, que é mestre de D, todas
locais.
Depois de carregado o formulário com 4 DBGrid, todos funcionam com a
velocidade esperada. No entanto, quanto mais níveis de mestre-detalhe eu
implemento (até chegar nos 4), o carregamento inicial fica muito demorado.
Já no terceiro nível de detalhe a espera leva vários minutos e, no quarto
nível passa de 30 minutos.
Todas as 4 tabelas têm, em torno de 1100 registros.
Gostaria de saber se é possível resolver esta questão do carregamento
inicial, reduzindo o seu tempo e esta questão.

Agradeço a atenção.
______________________________________________
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 






Mais detalhes sobre a lista de discussão lista