Tach,
zu Beginn muß ich sagen, daß es hier um meine erste Applikation geht, die sich mit DBs rumzuschlagen hat, ohne diese auf irgendeiner Form zu präsentieren.
Ich muß für eine Exportfunktion aus 4 Tabellen notwendige Daten holen. Die Tabellen sind nicht verknüpft, obwohl es besser wäre. Sie besitzen verschiedene Sekundär-Indizes, die ich nicht kenne und sind IMHO zu breit. (Mich stört jede Tabelle, die mehr als 10 Spalten besitz, vor allem, wenn 90% davon alphanumerisch sind)
Über eine 25-spaltige Tabelle muß ich etwa 12 Spalten herauslesen; 25000 Datensätze und mehr. Hier finde ich dann Infos, um aus
einer der drei anderen Tabellen (22, 64, 40 Spalten) einzelne Datensätze zu ziehen, wobei ich nur die Hälfte des Primärschlüssels in den Händen halte.
Aufgrund der Datenstruktur (2 auf Records basierende Klassen) lese ich also (, wie ich es zuvor schonmal in C++ gemacht hatte, )die Datensätze einzeln über Findfirst und Next eines TQuery-Objektes ein, schaue nach bestimmten Daten, wähle die passende weitere Tabelle und lese aus dieser den einen benötigten Datensatz. Für alles baue ich die SQL-Statements zusammen - für die drei Tabellen halt mit jedem Aufruf.
Ich halte das Ganze aber für grottenlahm. Für lächerliche 3000 Datensätze aus der ersten Tabelle mit weiteren 3000 Abfragen aus einer der anderen drei Tabellen braucht der Rechner (2GHz-System) über eine Minute! Sowas bin ich nicht gewohnt.
Was will ich? Mir genügt ein gedanklicher Ansatz, um das Ganze schneller zu machen. Immerhin steht den Daten eine Konvertierung nebst der Speicherung an und ich weis nicht, wie groß die Daten bei den Kunden werden können.
Vielleicht sind es nur Details, die ich zu machen brauch, oder ich sollte gar nicht so etwas machen, wie eine einfache TQuery-Komponente heranzuziehen, sondern etwas, daß in Delphi schneller arbeitet.
Aber: Ich darf nichts am Datenbank-Schema anfassen!
any kind of help is appreciated...
gegrüßt!