O que é mais Rapido Insert ou Append ?

872 views
Skip to first unread message

Christian Bobsin

unread,
Jul 7, 2009, 9:04:05 AM7/7/09
to dug...@googlegroups.com
Na minha Aplicação eu tenho que importa pela porta serial do equipamento diversos dados e armazenar numa tabela.

Atualmente eu estou fazendo de forma que fico num loop do tamanho da qde de registros dando append para cada novo registro e nof fina fazendo o ApplyUpdates


da seguinte forma

For I := 1 to TotalDeRegistros do


--
-----------------------------------
Christian Regina Bobsin

Christian Bobsin

unread,
Jul 7, 2009, 9:11:05 AM7/7/09
to dug...@googlegroups.com
Na minha Aplicação eu tenho que importa pela porta serial do equipamento diversos dados e armazenar numa tabela.

Atualmente eu estou fazendo de forma que fico num loop do tamanho da qde de registros dando append para cada novo registro e nof fina fazendo o ApplyUpdates


da seguinte forma

For I := 1 to TotalDeRegistros do
begin
   cdsRegs.Append;
   // Adidiciono os dados em seus campos
end;
cdsRegs.Post;
cdsRegs.ApplyUpdates(0);

só que noto que um Apply em 2.000 registros via Append; ele prende a aplicação por alguns segundos enquanto aplica as alterações.

Andei pensando em fazer diferente depois de ler alguns artigos

For I := 1 to TotalDeRegistros do
begin
   cdsRegs.Insert;
   // Adidiciono os dados em seus campos
  cdsRegs.Post;
end;

e na Propriedade AfterPost do cds fazer um ApplyUpdates. para inclusive garantir os dados salvos.


Mas a minha maior questão é a performace? isso vai ser ágil ou vai deixar a Aplicação ainda mais lenta?

Ou Melhor quais as otimizações interessantes para deixar o processo mais ágil?


Desculpem o posto duplo me confundi comas teclas de atalho do GMail e acabei enviando a mensagem sem cabado ela antes.

Tiago Pacheco

unread,
Jul 7, 2009, 9:21:13 AM7/7/09
to dug...@googlegroups.com
E aí Christian,

Seria interessante também, tu fazer um teste, fazendo a inserção na sua tabela, utilizando INSERT, mas com comando SQL. Sendo assim tu irá deixar todo o consumo de processamento para o servidor no qual está o Banco de Dados. Podes utilizar uma Query genérica que irá fazer os comandos SQL de inserção na tabela.

Sds,

Tiago Pacheco Vieira

2009/7/7 Christian Bobsin <christi...@gmail.com>

Christian Bobsin

unread,
Jul 7, 2009, 12:18:14 PM7/7/09
to dug...@googlegroups.com
Blz Tiago eu pensei nesta possibilidade tb. Mas no meu caso não faz muita diferença pq o Servidor do Banco sempre sera o mesmo PC da aplicação. A menos que o processo em sim sendo feito pelo Firebird se tenha um ganho de eficiencia considerável.

Att,
Christian Regina Bobsin

2009/7/7 Tiago Pacheco <tvpa...@gmail.com>
Reply all
Reply to author
Forward
0 new messages