Hallo beisammen,
ich muss ab und zu in meiner Applikation Preisinformationen von Lieferanten (Datanorm) einlesen. Typischerweise sind das Datenmengen von ca. 80.000 Datensätzen pro Lieferung.
Bei meiner derzeitigen Lösung dauert das Lesen und Verarbeiten eines einzigen Satzes etwas über 2 Sekunden - pro Datensatz!!! Das sollte doch ein wenig schneller gehen, oder?
Da ich in Sachen SQL noch ein wenig unbedarft bin, hoffe ich (mal wieder) auf einen hilfreichen Tipp...
Wenn ich testweise nur mal die Quelldatei lese und den Inhalt aufbereite, also nichts mit dem SQL Server mache, dann komme ich auf eine Geschwindigkeit von ca. 160 Sätzen pro Sekunde. Das Problem liegt also eher an meiner SQL-Syntax...
<P>
Derzeit gehe ich so vor:
<UL>
<LI>Öffnen der Quelldatei mit einem File-Stream
<LI>Zuweisung der Felder aus der Quelldatei an Variablen
<LI>SQL: Testen, ob der Datensatz bei uns bereits besteht
<LI>SQL: Je nachdem: INSERT oder UPDATE der Quelldaten
</UL>
Blöderweise arbeite ich beim SQL-Datenzugriff mit den Komponenten von Zeos, die hier wohl nicht so bekannt sein dürften... aber im Prinzip handelt es sich dabei auch nur TDataBase und TQuery.
Meine Fragen:
<UL>
<LI>Gibt es einen besseren Weg, zu prüfen, ob der Datensatz bei uns schon exisitiert?
<LI>Wie sieht es mit TransaktionsLeveln aus? Was wäre der Beste für diesen Fall? (Derzeit: RepeatableRead)
<LI>Stichwort AutoCommit (ist bei mir abgeschaltet...)
</UL>
Wenn jemand eine Idee hätte, wäre ich für einen Hinweis sehr dankbar.
Quellcode folgt...
Grüße aus Stuttgart
Ralph
ich muss ab und zu in meiner Applikation Preisinformationen von Lieferanten (Datanorm) einlesen. Typischerweise sind das Datenmengen von ca. 80.000 Datensätzen pro Lieferung.
Bei meiner derzeitigen Lösung dauert das Lesen und Verarbeiten eines einzigen Satzes etwas über 2 Sekunden - pro Datensatz!!! Das sollte doch ein wenig schneller gehen, oder?
Da ich in Sachen SQL noch ein wenig unbedarft bin, hoffe ich (mal wieder) auf einen hilfreichen Tipp...
Wenn ich testweise nur mal die Quelldatei lese und den Inhalt aufbereite, also nichts mit dem SQL Server mache, dann komme ich auf eine Geschwindigkeit von ca. 160 Sätzen pro Sekunde. Das Problem liegt also eher an meiner SQL-Syntax...
<P>
Derzeit gehe ich so vor:
<UL>
<LI>Öffnen der Quelldatei mit einem File-Stream
<LI>Zuweisung der Felder aus der Quelldatei an Variablen
<LI>SQL: Testen, ob der Datensatz bei uns bereits besteht
<LI>SQL: Je nachdem: INSERT oder UPDATE der Quelldaten
</UL>
Blöderweise arbeite ich beim SQL-Datenzugriff mit den Komponenten von Zeos, die hier wohl nicht so bekannt sein dürften... aber im Prinzip handelt es sich dabei auch nur TDataBase und TQuery.
Meine Fragen:
<UL>
<LI>Gibt es einen besseren Weg, zu prüfen, ob der Datensatz bei uns schon exisitiert?
<LI>Wie sieht es mit TransaktionsLeveln aus? Was wäre der Beste für diesen Fall? (Derzeit: RepeatableRead)
<LI>Stichwort AutoCommit (ist bei mir abgeschaltet...)
</UL>
Wenn jemand eine Idee hätte, wäre ich für einen Hinweis sehr dankbar.
Quellcode folgt...
Grüße aus Stuttgart
Ralph
Comment