Ich kann mir das Projekt gerade nicht ansehen, aber vielleicht gibt es ein Memoryleak o.ä. (dass z.B. dynamisch immer neue Verbindungen hinzugefügt werden oder so)?
EDIT @Christian:
Bist Du auf
MySQL festgelegt? Sonst teste doch mal Firebird...
Nein auf
MySQL bin ich nicht festgelegt. Habe auch die Treiber für Oracle und
MSSQL.
Der eigentliche Fehler in der Produktivanwendung war auf Oracle, da sind des sogar 250 000 Datensätze.
da kommt mir doch ein Gedanke wegen der Größe ...
73 Felder mit VARCHAR(500)
Wenn die Datenbankkomponente jetzt die Felder in maximaler Größe und als
Unicode in den Speicher holt dann sind das bei 20000 Zeilen:
Code:
73 {Felder} * 500 {CHAR} * 2 {
Unicode} * 20000 {Zeilen} = 1460000000 Bytes
1,360GB
Die Größe der Felder mit VARCHAR(500) wurde frei gewählt, und ich sehe es nun auch ein, dass es totaler Blödsinn war.
Ich hoffe, man möge es mir verzeihen.
Diese redundaten (Adress-) Daten in der Buchungen Tabelle sind ja nun auch nicht wirklich hilfreich und haben in der Tabelle "buchungen" eigentlich nichts verloren.
Die Adressinformationen gehören in eine Belegtabelle und die Referenz auf den Beleg gehört in die Buchungstabelle.
Ich würde hier einfach mal ordentlich normalisieren und dann wieder zu diesem Problem zurückkommen - wahrscheinlich hat sich dieses Problem dann schon erledigt.
Alle Spalten als varchar(500) ist auch nicht gerade kreativ ...
Natürlich sollen die Daten nichts representieren, sondern nur für die Fülle von Daten stehen.
Gibt es bei einer TSQLQuery die Möglichkeit eine Master-Detail-Beziehung aufzubauen (Kann es leider nicht nachprüfen, da ich nur im Unternehmen eine Delphi-Version habe)?
Das mit dem Debugger werde ich gleich mal morgen ausprobieren.
Viele Grüße