Tabelle teilen für kürzere Suchzeiten

Hallo,
Ich habe eine Access 2003-Datenbank in die ich regelmäßig eine Textdatei mit allen Kunden importiere. Das sind ca. 2 Mio Datensätze.
Über ein Suchformular können die Mitarbeiter einzelne Kundensätze aufrufen und sich anzeigen lassen.
Leider dauert der Aufruf eines Kunden ca. zwei Minuten !
Das ist eindeutig zu lange.
Da die Suche über die Eingabe der Kundensatznummer erfolgt, ist meine Idee, die Tabelle „Kunden“ in vier Teile zu schneiden, um Access per Macro in einer der Vier Teile suchen zu lassen.
Ist das überhaupt machbar und mindert das die Suchzeiten ?
Das ist die Prozedur mit der ich den Datensatz suche:

Private Sub Befehl6_Click()
On Error Resume Next
Dim StrSQL
StrSQL = „SELECT * FROM Abfrage1 WHERE " & Me!Auswahl.Value & " LIKE’“ & Me!Wert.Value & „*’ ORDER BY [Depotnummer] DESC“
Me!Liste.RowSource = StrSQL
End Sub

Kann Jemand helfen, wie ich das da einbastel ?
Gruß Christian

Hallo Christian,

Ich habe eine Access 2003-Datenbank in die ich regelmäßig eine
Textdatei mit allen Kunden importiere. Das sind ca. 2 Mio
Datensätze.
Über ein Suchformular können die Mitarbeiter einzelne
Kundensätze aufrufen und sich anzeigen lassen.
Leider dauert der Aufruf eines Kunden ca. zwei Minuten !
Das ist eindeutig zu lange.

ja, in der Tat.

Da die Suche über die Eingabe der Kundensatznummer erfolgt,
ist meine Idee, die Tabelle „Kunden“ in vier Teile zu
schneiden, um Access per Macro in einer der Vier Teile suchen
zu lassen.

keine gute Idee

Ist das überhaupt machbar und mindert das die Suchzeiten ?

Nein, glaube nicht.

Das ist die Prozedur mit der ich den Datensatz suche:

Private Sub Befehl6_Click()
On Error Resume Next
Dim StrSQL
StrSQL = „SELECT * FROM Abfrage1 WHERE " & Me!Auswahl.Value &
" LIKE’“ & Me!Wert.Value & „*’ ORDER BY [Depotnummer] DESC“
Me!Liste.RowSource = StrSQL
End Sub

Hier liegt der Hund bei Like begraben…

Oben sagst Du, dass die „Suche über die Eingabe der Kundensatznummer erfolgt“.

Das sehe ich nicht. Die Suche wird über ein beliebiges (ausgewähltes) Feld in einer Abfrage (evtl auch mit „Like“, bzw. „Wie“) und mit dem LIKE-Operator und dem Platzhalter-Sternchen durchgeführt. Dieses ist die eigentliche „Bremse“.

Wenn Du diese „Textsuche“ nicht in eine Suche über ein Feld mit Datentyp Zahl (Long), das zudem noch indiziert sein sollte, erledigen kannst, sehe ich ziemlich schwarz für eine wesentliche Geschwindigkeits-Verbesserung.

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo,

das Problem dürfte bei Dir ein anderes sein.

1.) Setze einen Index auf die Felder, die in der Where-Klauses vorkommen
2.) Vermeide like/wie in Abfragen
3.) Bei Access-Datenbanken gibt es eine Grundregel: So oft wie möglich und vor allem nach jedem Import die Datenbank komprimieren/reparieren, da Access extrem zum fragmentieren neigt!

Viele Grüße
Lumpi