MDB Performance Frage

27/07/2008 - 00:27 von Thomas Hübner | Report spam
Hi All

ich importiere derzeit eine CSV (24 columns) zeilenweise über command
und parameterobjekt in eine MDB. Da in der CSV (2000 Datensàtze) maximal
5-10% _neue_ Daten sind und der Rest über OleDBException (indiziertes
Feld in der DB - keine Doubletten) verworfen wird frage ich mich ob das
so toll ist.

Wàre es schneller über executescalar auf das vorhandensein des
datensatzes zu prüfen und diesen dann gleich zu verwerfen?(würde das
erstellen des commands und der Parameterobjekte einsparen) Oder wàre es
schneller eine datable auf rows.count zu prüfen? Oder ist das "gegen
eine Exception rennen lassen" schon das schnellste.(kann ich mir nicht
vorstellen). Die CSV über die Jet mit "IN" zu importieren dauert zu
lange (Netzlaufwerk)

Gruß,
Thomas
 

Lesen sie die antworten

#1 Peter Fleischer
27/07/2008 - 00:45 | Warnen spam
"Thomas Hübner" schrieb im Newsbeitrag
news:g6g8c8$j6b$

ich importiere derzeit eine CSV (24 columns) zeilenweise über command und
parameterobjekt in eine MDB. Da in der CSV (2000 Datensàtze) maximal 5-10%
_neue_ Daten sind und der Rest über OleDBException (indiziertes Feld in
der DB - keine Doubletten) verworfen wird frage ich mich ob das so toll
ist.



Hi Thomas,
eine Exception zur Steuerung des Programmablaufes zu nutzen ist die denkbar
ungünstigste Lösung, da damit das Programm locker 20 bis 100 Mal langsamer
làuft. Ein Exception ist immer maximaler Stress für die CLR, da alle
Aufrufebenen mehrmals durchlaufen werden, um festzustellen, wo letztendlich
die Ausnahmebehandlung auszuführen ist und welche Finally's noch
abzuabreiten sind.

Wàre es schneller über executescalar auf das vorhandensein des datensatzes
zu prüfen und diesen dann gleich zu verwerfen?(würde das erstellen des
commands und der Parameterobjekte einsparen) Oder wàre es schneller eine
datable auf rows.count zu prüfen? Oder ist das "gegen eine Exception
rennen lassen" schon das schnellste.(kann ich mir nicht vorstellen). Die
CSV über die Jet mit "IN" zu importieren dauert zu lange (Netzlaufwerk)



Um für jeden Datensatz der CSV-Datei zu prüfen, ob dieser zu importieren
(aktualisieren) ist, muss sowieso jeder Datensatz gelesen werden.

Die schnallste Lösung ist, einen vernüftigen Datenbankserver zu nutzen, um
im ersten Schritt mit einer Bulk-Methode die CSV-Daten temporàr in die
Datenbank zu importieren und in einem zweiten Schritt den Abgleich mit den
vorhandenen Daten auszuführen.

Viele Gruesse

Peter

Ähnliche fragen