AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verständnisfrage: dBase vs. SQL
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage: dBase vs. SQL

Ein Thema von gmc616 · begonnen am 5. Mai 2006 · letzter Beitrag vom 5. Mai 2006
Antwort Antwort
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

Verständnisfrage: dBase vs. SQL

  Alt 5. Mai 2006, 17:08
Datenbank: dBase • Zugriff über: ADS
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 <'AORDER 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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Verständnisfrage: dBase vs. SQL

  Alt 5. Mai 2006, 17:17
Probier mal die Range-Methode (SetRange, ...) . Diese sind auch bei ADS LocalServer optimiert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#3

Re: Verständnisfrage: dBase vs. SQL

  Alt 5. Mai 2006, 17:26
Hi,

ich habe mal einen dBaseIV-Viewer geschrieben, der ebenfalls mittels der ADS-Komponenten (8.0) von Extended Systems auf die Tabellen zugreift. Es handelt sich ebenfalls um Clipper-DBFs.

Ihc habe nun testweise folgende tabelle genommen:

Dateigröße: 1,5GB
Anzahl Felder: 22
Anzahl Datensätze: 10.076.750
kein Index

Eine SQL-Abfrage nach Schema SELECT A FROM B WHERE A=X ORDER BY A dauerte 40 Sekunden.
Auch nicht sonderlich schnell, aber schneller als Du, bei 5-facher Anzahl der Datensätze.


Darf ich fragen, welches DB-Grid Du benutzt?

Ich musste nämlich damals mit Schrecken feststellen, dass die TDBAdvGrid-Komponente von TMS eine grottige Performance hat, die ich mir bis heute nicht erklären kann (
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Verständnisfrage: dBase vs. SQL

  Alt 5. Mai 2006, 17:59
Zitat von s-off:
Darf ich fragen, welches DB-Grid Du benutzt?
Natürlich darfst du. Muß dich aber enttäuschen. In meinem speziellen Fall garkeins.

Allein die Anfrage AdsQuery.open dauer ja schon ne Ewigkeit.

Laut Delphi-Hilfe funktioniert SetRange bzw. SetStart in dBase-Dateien nur mit indizierten Feldern.
Ich habe aber leider keinen Index, den ich hierfür verwenden könnte.

Trotzdem Frage ich mich, wieso das DOS-Prog so viel schneller ist.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz