Hallo,
ich habe ein Problem beim Zugriff und Filtern einer großen Access Datenbank mit ADO (Datenbank: ca. 400 MB, ca. 1,4 Mio Datensätze mit 15 Spalten )
Es geht einfach nicht schnell genug (4-5 Sekunden Wartezeit)
Das Öffnen des Recordsets erfolgt bereits asychron im Hintergrund, aber das ändert ja nichts am Geschwindigkeitsproblem.
Im Anschluss ans Öffnen werdend die Daten in einem Datagrid dargestellt.
Das Filtern realisiere ich momentan über die Filterfunktion:
und anschließend wie oben wieder Ausgabe ins DataGrid
gibt es eine Möglichkeit aus der Sache mehr performance zu holen? Diese Wartezeit nervt
theoretisch gesehen brauche ich idR auch nicht alle 1500000 Datensätze, sondern nur ca. 500000 zu beginn mit der option auf 1500000 weiterzuladen. Ist dieser Ansatz durchführbar? Falls ja, wie? Hab noch recht wenig Erfahrung in sachen Datenbankprogrammierung...
danke
ich habe ein Problem beim Zugriff und Filtern einer großen Access Datenbank mit ADO (Datenbank: ca. 400 MB, ca. 1,4 Mio Datensätze mit 15 Spalten )
Es geht einfach nicht schnell genug (4-5 Sekunden Wartezeit)
Das Öffnen des Recordsets erfolgt bereits asychron im Hintergrund, aber das ändert ja nichts am Geschwindigkeitsproblem.
Im Anschluss ans Öffnen werdend die Daten in einem Datagrid dargestellt.
Visual Basic-Quellcode
- Option Explicit
- Dim conn As ADODB.Connection
- Public rs As ADODB.Recordset
- Public Sub Verbindung_DB_async()
- 'Verbindung zur Datenbank herstellen
- Set AdoCmd = New ADODB.Command
- Set conn = New ADODB.Connection
- Set rs = New ADODB.Recordset
- With conn
- .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB1.mdb"
- End With
- rs.CursorLocation = adUseClient
- rs.Open "SELECT * FROM Tabelle1", conn, adOpenKeyset, adLockReadOnly, Options:=adAsyncConnect
- Form1.DataGrid1.Visible = False
- Set Form1.DataGrid1.DataSource = rs
- Form1.DataGrid1.Visible = True
- end sub
Das Filtern realisiere ich momentan über die Filterfunktion:
und anschließend wie oben wieder Ausgabe ins DataGrid
gibt es eine Möglichkeit aus der Sache mehr performance zu holen? Diese Wartezeit nervt
theoretisch gesehen brauche ich idR auch nicht alle 1500000 Datensätze, sondern nur ca. 500000 zu beginn mit der option auf 1500000 weiterzuladen. Ist dieser Ansatz durchführbar? Falls ja, wie? Hab noch recht wenig Erfahrung in sachen Datenbankprogrammierung...
danke