Hallo,
ich hab da mal wieder ne Frage
Wie kann ich die Suche in einer Firebird-
DB / pFIBDataset bescheunigen?
Folgende Situation: Eine Tabelle mit Kundendaten, in der möchte ich nach einem Kunden anhand seiner Kundennummer suchen. Das Feld 'KUNDEID' ist vom Typ INTEGER und ist der PK, hat also einen Index.
Wenn ich jetzt suche:
Delphi-Quellcode:
//Variante 1:
with dsetKunde do begin
Active := true;
DisableScrollEvents;
Locate('KUNDEID', KuNr, []);
EnableScrollEvents;
end;
//Variante 2:
with dsetKunde do begin
Filter := 'KUNDEID' + KuNr;
Filtered := true;
Active := true;
end;
dann dauert das ewig. Zur Zeit hab ich mehr oder weniger nur Testdaten drinne, so etwa 30000 Datensätze. Das Suchen dauert jedoch mal ganz locker 15-20 Sekunden im ungünstigen Fall. Es werden im Endeffekt bestimmt 10-15 mal so viele Datensätze sein, da ist so eine lange Suchzeit nicht akzeptabel.
Gibts es da noch irgendwelche Tricks, das ganze schneller zu machen?