Große Datenmengen mit Access

22/11/2007 - 15:09 von Bjoern | Report spam
Moin!

Access 2003 unter WXPpro

Ich erhalte monatlich Tabellen, die ich an bestehende Tabellen anfügen muss.
Die Größenordnung liegt so bei 200000 bis 500000 Datensàtzen, die jeden Monat
angefügt werden müssen. Die Tabelle, in der die Daten gesammelt werden,
enthàlt inzwischen ca. 4 Mio Datensàtze. Die Datensàtze selbst sind nicht
sehr groß, es gibt nur 4 Spalten mit Textinhalten.

Neben der Datenmenge gibt es noch ein weiteres Problem: Die monatlichen
Listen enthalten einige Datensàtze (ca. 5-10%), die auch schon in der
Sammeltabelle vorhanden sind. Diese Datensàtze dürfen nicht mit angefügt
werden.

So, und jetzt noch ein Problem: Die Kiste, mit der ich das machen muss ist
ein P4 mit 1,7Ghz und 512MB (!) RAM. Es ist mein Firmen-PC und einen neuen
gibt's definitiv nicht.

Welche Vorgehensweise ist hierbei am Sinnvollsten?

Ich hab's auf folgende Arten versucht, aber jedes Verfahren dauert viel zu
lange:

1.
In der Sammeltabelle habe ich für das Feld, das keine Duplikate erlaubt,
einen eindeutigen Index angelegt. Dann füge ich die Daten mittels
Anfügeabfrage an die Sammeltabelle an. Durch den Index werden die Doppelten
von vornherein gar nicht erst reingeschrieben.
Das Ganze dauert ziemlich lange, ich würde sagen mindestens 30 Minuten. Ich
vermute mal, das liegt am Index, der ja bei jedem Einfügen mit angepasst
werden muss.

2.
Ich habe auch versucht, das Ganze ohne den Index zu machen, die Daten
einfach dranzuhàngen und dann anschließend eine gruppierte
Tabellenerstellungs-Abfrage zu bauen. Die erstellte Tabelle enthàlt dann
natürlich keine Duplikate mehr. Das funktioniert, dauert aber noch viel
lànger (ich hab's irgendwann abgebrochen)

3.
Mit VBA hab ich es auch versucht:
Alle Daten ohne Rücksicht auf Duplikate zusammenführen, dann einen Recordset
aus der Sammeltabelle bauen, jeden Datensatz ankucken, und nachsehen, ob er
öfter vorkommt. Wenn ja, den aktuellen rauslöschen und den nàchsten ansehen.
Das so lange bis alle Datensàtze durch sind. Das hat auch ewig gedauert, und
ich hab's abgebrochen. Man könnte es natürlich verbessern, indem man in den
Recordset nur die anzufügenden Datensàtze packt, aber auch bei 500.000
Datensàtzen dauert das unertràglich lange.

OK, damit bin ich mit meinem Latein am Ende. Kann mir jemand helfen?

Danke und viele Grüße,

Björn
 

Lesen sie die antworten

#1 Jens Schilling
22/11/2007 - 15:26 | Warnen spam
Hallo, Björn

Bjoern wrote:
Moin!
Ich erhalte monatlich Tabellen, die ich an bestehende Tabellen
anfügen muss. Die Größenordnung liegt so bei 200000 bis 500000
Datensàtzen, die jeden Monat angefügt werden müssen. Die Tabelle, in
der die Daten gesammelt werden, enthàlt inzwischen ca. 4 Mio
Datensàtze. Die Datensàtze selbst sind nicht sehr groß, es gibt nur 4
Spalten mit Textinhalten.

Neben der Datenmenge gibt es noch ein weiteres Problem: Die
monatlichen Listen enthalten einige Datensàtze (ca. 5-10%), die auch
schon in der Sammeltabelle vorhanden sind. Diese Datensàtze dürfen
nicht mit angefügt werden.

So, und jetzt noch ein Problem: Die Kiste, mit der ich das machen
muss ist ein P4 mit 1,7Ghz und 512MB (!) RAM. Es ist mein Firmen-PC
und einen neuen gibt's definitiv nicht.



Tja, dann ist Deinem Boss Deine Arbeitszeit wohl nicht so wichtig

Welche Vorgehensweise ist hierbei am Sinnvollsten?
1.
In der Sammeltabelle habe ich für das Feld, das keine Duplikate
erlaubt, einen eindeutigen Index angelegt.



Das ist die richtige Methode...

Das Ganze dauert ziemlich lange, ich würde sagen mindestens 30
Minuten. Ich vermute mal, das liegt am Index, der ja bei jedem
Einfügen mit angepasst werden muss.



Nun ja - es sind ja auch ein paar Datensàtze, die da geschrieben werden
müssen.
Davon abgesehen - auf die Dauer wirst Du bei der Anzahl an Datensàtzen
vermutlich eh über kurz oder lang die Grenzen von Access erreichen...
Wie gross ist denn die DB mittlerweile ?

Gruss
Jens
______________________________
FAQ: http://www.donkarl.com

Ähnliche fragen