Delphi > FireDAC

Rychlost TFDTable

(1/2) > >>

ShaneZB:
Zdar všem.
Pracujeme na opuštění BDE a to přechodem na FireDAC. Používáme databázi FireBird. Při testování nás nemile překvapilo rapidní zpomalení načtení dat oproti BDE. Možná je hlavní problém v tom, že se používá třída TTable (TFDTable) – ale vzhledem k situaci není možné se tomu vyhnout. Zkoušíme různé rady z internetu, ale nic nezabírá.
Moje osobní domněnka je, že bez ohledu na nastavení, že se RecordCount má zjišťovat podle počtu stažených dat, zjišťuje se vždy kompletní počet – nebo něco nastavuju špatně – protože „FireDAC Monitor“ vypisuje dotaz na COUNT vždy. BDE zjišťuje RecordCount až když je třeba.
Je nějaká možnost, aby TFDTable nedělal dotaz na počet záznamů ihned po Open, ale dalo se to  zjistit až na vyžádání?
Nebo - existuje nějaký jiný spolehlivý postup/nastavení pro dosažení rychlého otevření tabulky?

Radek Červinka:
Pouzivas FetchOptions.Mode := fmAll ?

Jaky je v case rozdil mezi otevrenim v TFDTable a TFDQuery?

Proc presne potrebujes TFDTable? i nad TFDQuery muzes delat updaty pres Edit a spol, jen musi byt jasny index, a jiny duvod mne nenapada.

ShaneZB:

--- Citace ---Pouzivas FetchOptions.Mode := fmAll ?

--- Konce citace ---
Mám tohle nastavení:

--- Kód: ---  FetchOptions.Mode := fmOnDemand;
  FetchOptions.RowsetSize := 20;
  FetchOptions.RecordCountMode := cmFetched;

--- Konec kódu ---


--- Citace ---Jaky je v case rozdil mezi otevrenim v TFDTable a TFDQuery?

--- Konce citace ---
Záleží na velikosti tabulky - čím větší tím vetší je rozdíl - třeba i poloviční. Ale mě víc trápí rozdíl rychlosti TTable <> TFDTable.


--- Citace ---Proc presne potrebujes TFDTable? i nad TFDQuery muzes delat updaty pres Edit a spol, jen musi byt jasny index, a jiny duvod mne nenapada.

--- Konce citace ---
Projekt, který překlápím je opravdu velký moloch a TTable je moc hluboko ve střevech. Používá se FindKey; GotoNerest a pod ...




Radek Červinka:
tak zkus FetchOptions.Mode := fmAll, to je zhruba to co dela BDE

  FetchOptions.RowsetSize := jsem exprimentoval;
  FetchOptions.RecordCountMode := nemenil jsem ;

ShaneZB:

--- Citace ---tak zkus FetchOptions.Mode := fmAll, to je zhruba to co dela BDE
--- Konce citace ---
To je ještě pomalejší, protože stahuje vždycky všechny záznamy v tabulce.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi