Fórum 4 min. p dar um Post em tabela volumosa #47132

01/10/2004

0

Bom dia!
Amigo, ajudem-me com um problema.
Tenho uma tabela com 43200 registros mais ou menos, com uma chave primária de 5 campos dos 32 que existem nela e com indice para um campo que faz parte da chave primária.
Tanto no Delphi 5 quanto no Delphi 7 CLX, quando dou um Post e/ou ApplyUpdates no Query ou ClientDataSet o processamento demora quase 4 minutos, quando se conclui.
Alguém poderia me orientar a respeito de uma possível solução para melhorar a performance do programa com essa tabela?? Filtrar os registros não tem me adiantado..
Agradeço desde já a atenção.

Digaum


Rodsrabbit

Rodsrabbit

Responder

Posts

01/10/2004

Aroldo Zanela

Colega,

Você pode detalhar melhor alguns detalhes, como: Tipo e velocidade da rede, componentes de acesso aos dados, descrição do hardware?


Responder

Gostei + 0

01/10/2004

Rodsrabbit

O Hardware eh bom, Athlon XP, 1,4Ghz, 256MB de Memoria, o acesso eh feito localmente.
No Delphi 5 uso o RXQuery, RXDBGrid e DataSource, no Delphi 7 CLX uso os componentes da DataAccess + o SqlDataSet da dbExpress.


Responder

Gostei + 0

01/10/2004

Afarias

Faça um INSERT ou UPDATE ´direto na tabela´ usando IBConsole ou ISQL e veja o q ocorre.

Outra coisa, vc tem triggers nessa tabela?


T+


Responder

Gostei + 0

01/10/2004

Rodsrabbit

Não, eu nao tenho Triggers..
Estive pensando sim em montar o SQL dentro do Delphi e executar, mas isso daria um trabalho imenso pois nem todos os campos da tabela sao preenchidos, daí eu teria que prever todos os casos possíveis para os cadastros. E no caso dos updates / edits daria mais trabalho ainda.
:cry:


Responder

Gostei + 0

01/10/2004

Afarias

Não entendi. Vc não pode fazer um simples insert ou update nessa tabela no IBConsole ou ISQL??


T+


Responder

Gostei + 0

14/10/2004

Isaiasbass

Tive um problema parecido com o Post em tabelas com milhares de registros.

Eu uso IBUpdate no Delphi 7 e IB 6.0

Pra resolver, antes de qq insert abra a table com um sql q lhe retorne poucos registros ou nenhum, tipo: ´select * from Table1 where Codigo = 0´ , isso lhe trará uma resposta sem registro e o seu programa dará o insert e post como se fosse vazio. Tudo leve, nem parece q o Servidor tá lotado hehehe


Responder

Gostei + 0

15/10/2004

Afarias

Tive um problema parecido com o Post em tabelas com milhares de registros.


Na verdade seu problema não era o INSERT mas a carga dos registros da base. Este é um ´equívoco´ muito comum principalmente para desenvolvedores q vem de gerenciadores de arquivo (como DBase) para sistemas C/S



T+


Responder

Gostei + 0

15/10/2004

Rodsrabbit

Pessoal, quero agradecer a todos os posts e dizer que todos me ajudaram a investigar e descobrir o real motivo da lentidão.
Foi criada uma trigger numa tabela relacionada, que é acionada ao alterar um campo dessa tabela. Quando todas as tabelas que tem chave estrangeira para essa que contém a trigger, dão um post, estranhamente a trigger é acionada, fazendo alteração em TODOS os registros de TODAS AS TABELAS RELACIONADAS. Serviço de eficiência de curto prazo executado por algum porquinho aqui da empresa rs...
Valeu pessoal, pela força.
Agora vou destroçar essa trigger mal feita e colocar isso no código, eh mais simples.

:o


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar