-
ADO SQL in Access über nicht indexiertes Feld auf der AS/400 abfragen
Hallo zusammen,
ich muss gleich vorweg sagen, dass ich noch neu auf dem Gebiet der Abfragen in VBA auf den AS/400 bin.
Habe dazu folgende Frage:
Wenn ich direkt aus VBA heraus auf eine AS/400 zugreife und das Selektionskriterium kein Indexiertes Feld auf der AS/400 ist, dann dauert die Abfrage ewig lange (ca. 6 Minuten bei einer Datei mit ca. 16 Mio Datensätzen).
Diese Abfrage sieht dann folgendermaßen aus:
__________________
Public Sub as400_Connect()
Dim MyConn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim DB As DAO.Database
Dim STR As String
Dim strFakturnummer as String
strFakturnummer = inputbox("Bitte geben Sie die Fakturnummer ein:")
Set DB = CurrentDb
Set MyConn = New ADODB.Connection
MyConn.Open "Provider=IBMDA400;Data Source=xxxx;", "xxxx", "xxxx"
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = MyConn
Set DB = CurrentDb
With MyConn
sql = "SELECT * from FPRDDTA.LFSVHD13 where HDNFAK = "
& strFakturnummer
rs.Open sql
Do Until rs.EOF
Debug.Print rs.Fields("hdnauf")
rs.MoveNext
Loop
End With
rs.Close
End Sub
__________________
Gibt es eine oder mehrere Möglichkeiten, diese Abfrage in Access deutlich zu beschleunigen - vielleicht indem man das Feld über SQL irgendwie indexiert? Sicher haben Sie diverse Lösungsansätze parat.
Vielen Dank im voraus!
Grüße,
Wilfried
-
... ich kann mir kaum vorstellen, dass es für die Fakturnummer keinen Index geben soll, gehört da vielleicht noch eine Firmennummer, oder ähnliches dazu?
Sollte das allerdings wirklich fachlich richtig sei und da nicht ein wesentlicher Teil des Schlüssels fehlen, hilft da ein create index durch den Datenban Verantwortlichen (keinesfalls by the fly im Anwendungsprogramm.
D*B
Zitat von gerhardsw
Hallo zusammen,
ich muss gleich vorweg sagen, dass ich noch neu auf dem Gebiet der Abfragen in VBA auf den AS/400 bin.
Habe dazu folgende Frage:
Wenn ich direkt aus VBA heraus auf eine AS/400 zugreife und das Selektionskriterium kein Indexiertes Feld auf der AS/400 ist, dann dauert die Abfrage ewig lange (ca. 6 Minuten bei einer Datei mit ca. 16 Mio Datensätzen).
Diese Abfrage sieht dann folgendermaßen aus:
__________________
Public Sub as400_Connect()
Dim MyConn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim DB As DAO.Database
Dim STR As String
Dim strFakturnummer as String
strFakturnummer = inputbox("Bitte geben Sie die Fakturnummer ein:")
Set DB = CurrentDb
Set MyConn = New ADODB.Connection
MyConn.Open "Provider=IBMDA400;Data Source=xxxx;", "xxxx", "xxxx"
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = MyConn
Set DB = CurrentDb
With MyConn
sql = "SELECT * from FPRDDTA.LFSVHD13 where HDNFAK = "
& strFakturnummer
rs.Open sql
Do Until rs.EOF
Debug.Print rs.Fields("hdnauf")
rs.MoveNext
Loop
End With
rs.Close
End Sub
__________________
Gibt es eine oder mehrere Möglichkeiten, diese Abfrage in Access deutlich zu beschleunigen - vielleicht indem man das Feld über SQL irgendwie indexiert? Sicher haben Sie diverse Lösungsansätze parat.
Vielen Dank im voraus!
Grüße,
Wilfried
-
Hallo! Danke für die schnelle Rückinfo. Wenn ich über Access eine Verknüpfung auf die AS/400 Tabelle erstelle, sind doch grundsätzlich die Schlüsselfelder fett markiert, oder? Falls ja ist dieses Datenfeld wirklich nicht indexiert. Eine gleiche Abfrage über einen Range einer Auftragsnummer (welche fett markiert angezeigt wird) ist in Sekunden erledigt. Das spricht ja eher dafür... Gibt es denn evtl. auch noch andere, performantere Möglichkeiten um hier zum Ziel zu kommen?!
Viele Grüße,
Wilfried
-
... ich würde da mit oder rechnen, ich weiß zwar nicht, was access da anzeigt, aber ich vermute mal den Primärschlüssel.
Wenn es da anderes als eine Index gäbe, hätte ich das schon mit genannt.
Ich würde aber nochmal dringend empfehlen, mal abzuklären, ob das genau so Sinn macht, üblicherweise kann man davon ausgehen, dass für Standard Varianten von Abfragen Zugriffspfade da sind.
D*B
Zitat von gerhardsw
Hallo! Danke für die schnelle Rückinfo. Wenn ich über Access eine Verknüpfung auf die AS/400 Tabelle erstelle, sind doch grundsätzlich die Schlüsselfelder fett markiert, oder? Falls ja ist dieses Datenfeld wirklich nicht indexiert. Eine gleiche Abfrage über einen Range einer Auftragsnummer (welche fett markiert angezeigt wird) ist in Sekunden erledigt. Das spricht ja eher dafür... Gibt es denn evtl. auch noch andere, performantere Möglichkeiten um hier zum Ziel zu kommen?!
Viele Grüße,
Wilfried
Similar Threads
-
By olafu in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 05-10-06, 08:13
-
By sjuerges in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 17-08-06, 12:12
-
By Fondue in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 28-04-06, 19:40
-
By rcauchy in forum NEWSboard Windows
Antworten: 9
Letzter Beitrag: 06-06-05, 10:24
-
By Olli1 in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 25-06-04, 14:47
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks