Hallo
DP,
ich schreibe an einem Programm, welches auf dBase-Dateien zugreifen und hier und da ein paar Datensätze manipulieren soll.
Für den Zugriff nehme ich den ADS-Local-Server. ADS-TableType hab ich auf ttAdsCDX, da es sich um Clipper-DBF's handelt und die Indices in *.cdx-Dateien speichert sind.
Ich muß feststellen, dass bestimmt Anfragen wie z.B.
SQL-Code:
SELECT * FROM objects WHERE obj_nr <'A' ORDER BY obj_name;
/* hierbei ist OBJ_NR ein String.
Und alle Objekte die mit einem Buchstaben beginnt haben eine besondere Eigenschaft. Ist aber egal, hat nix mit meinem Problem zu tun. */
mit ADS sehr lange dauern können.
In meinem Fall kann diese
SQL-Anfrage bei Tabellen mit ca. 2 Mio. DS bis zu 2 Minuten dauern.
Der Grund ist mir klar. Es liegt am fehlenden Index. Kann/darf ich aber nicht ändern.
Das dBase-DOS-Programm, dem eigendlich die die DBF gehören, kann das gleiche Ergebnis sofort anzeigen.
Wieso?
Arbeitet dBase intern so anders, das eine 15 Jahre alte 16Bit-Anwendung eine 32Bit-Anwendung so im Regen stehen lassen kann?
Vlt. kann mir das einer erklären.
Grüße
gmc