Zitat von
Union:
Du erzählst uns wahrscheinlich nicht wirklich alles. Ich habe hier eine Adressentabelle im DBF Format mit knapp 600.000 Einträgen. Und hier sind meine Ergebnisse:
Select * from adress where name < 'S%' -> zwischen 47ms und 120ms
Select count(*) from adress where name < '%S' -> zwischen 46ms und 98ms (418000 Treffer)
Das sind ja Traumzeiten
Zitat von
Union:
Hast Du vielleicht die Datenbankverbindung geschlossen?
AdsQuery.Close? Natürlich, bei jedem Schließen meines SucheFensters.
Zitat von
Union:
Der allererste Aufruf nach dem Öffnen kann tatsächlich lange dauern. Aber wenn eine Tabelle einmal gecached wurde, geht das blitzschnell.
Stimmt! Das bringt mich auf eine Idee!
Zitat von
Union:
- Welche ADS-Version verwendest Du
- TDataSet Descendant for Delphi/C++Builder 7.0
Zitat von
Union:
- Wie greifst Du auf die Tabelle zu (Direkt oder AdsConnection)
AdsConnection. Wie greift man denn direkt zu?
Zitat von
Union:
- Wie sind die Indexausdrücke genau aufgebaut
aus AdsQuery.IndexDefs.Items[i].FieldExpression erfahre ich nur die einzelnen Indices zB. 'name' oder 'plz;ort'. Anders komme ich z.Z.nicht rann, da mir die Tools zu den Clipper-DBs fehlen.
Zitat von
Union:
- Verwendest Du ADSSettings, und wenn ja welche
die Standarteinstellungen, außer ShowDeleted := false
Zitat von
Union:
- Befindet sich eine grosse Anzahl von Deleted-Records in der Tabelle
Unteranderem mit sicherheit ja
ich hab jetzt mit
Delphi-Quellcode:
AdsQuery.SetKey;
AdsQuery.FieldByName('name').AsString := 'g';
AdsQuery.GotoNearest;
rum experimentiert, aber so richtig funktioniert das auch nicht.
Mal findet "er" einen Datensatzen, einen anderen wieder nicht ...
Mit Filter zu arbeiten ist auch ne feine Sache, funktioniert sogar (auf den ersten Blick), allerdings soll in der Anzeige nix gefiltert werden.
Deswegen helfen mir Filter auch nicht weiter.
Gruß
gmc