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 rápido, 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 rápido que o DBF?
o que eu posso fazer para melhorar o Desempenho?