Tenho duas tabelas em DBF. TDados e TItens. TDados tem +/- 120.000 itens TItens tem +/- 300.000 itens Fiz a conversão (rotina propria) DBF para FDB. a Tabela TItens esta relacionada a Tabela TDados. no Clipper abria as duas tabelas bem rapido, no Firebird esta demorando bastante (bem mais demorado que no DBF).
Ex.: // firebird - esta rotina demora bastante. with DMArq do begin zqTrans.SQL.Clear; zqTrans.SQL.Add('Select MAX(PedNum) as ULTIMO From Dados'); zqTrans.Open; // aqui demora bastante................ sCodigo := zqTrans.FieldByName('Ultimo').asString; try sCodigo := FormatFloat('000000000000000', StrToFloat(sCodigo) + 1); except sCodigo := '1'; end; end;
// dbf - esta rotina é bem rapida with DMArqSce.qItemCod do begin Close; DataBaseName := Drive_IniR + '\Sistema\Estoque\' + Nr_Ite; Sql.Clear; Sql.Add('Select PedNum from TDados order by PedNum');
result := oCpf; // qItemCod.FieldByName('IteCod').asString;
Close; end;
Assim todas as consultas (abrindo toda a tabela - Open) como filtros, no firebird, são bem mais demorados que no DBF. Isto é normal? o Firebird não deveria ser mais rapido que o DBF? o que eu posso fazer para melhorar o Desempenho?
Pergunta
tixa
Tenho duas tabelas em DBF. TDados e TItens.
TDados tem +/- 120.000 itens
TItens tem +/- 300.000 itens
Fiz a conversão (rotina propria) DBF para FDB.
a Tabela TItens esta relacionada a Tabela TDados.
no Clipper abria as duas tabelas bem rapido, no
Firebird esta demorando bastante (bem mais demorado que no
DBF).
Ex.:
// firebird - esta rotina demora bastante.
with DMArq do
begin
zqTrans.SQL.Clear;
zqTrans.SQL.Add('Select MAX(PedNum) as ULTIMO From Dados');
zqTrans.Open; // aqui demora bastante................
sCodigo := zqTrans.FieldByName('Ultimo').asString;
try
sCodigo := FormatFloat('000000000000000', StrToFloat(sCodigo) + 1);
except
sCodigo := '1';
end;
end;
// dbf - esta rotina é bem rapida
with DMArqSce.qItemCod do
begin
Close;
DataBaseName := Drive_IniR + '\Sistema\Estoque\' + Nr_Ite;
Sql.Clear;
Sql.Add('Select PedNum from TDados order by PedNum');
Open;
Last;
sCod := FieldByName('IteCod').asString;
sCod := Copy(FormatFloat('0000000000', StF(sCod)), 1, 8);
cCod := StrToFloat(sCod);
OCpf := IntToStr(Trunc(ccod) + 1);
CodBar := FormatFloat('00000000', cCod + 1);
ocpf := IntToStr(StrToInt(Calc_dig(OCpf)));
result := oCpf; // qItemCod.FieldByName('IteCod').asString;
Close;
end;
Assim todas as consultas (abrindo toda a tabela - Open) como filtros, no firebird, são bem mais demorados que no DBF.
Isto é normal?
o Firebird não deveria ser mais rapido que o DBF?
o que eu posso fazer para melhorar o Desempenho?
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.