Ich versuche, eine Legacy-Anwendung zu optimieren, die Access als Datenbank verwendet. Das Problem mit einigen der Abfragen ist, dass sie nach Stunden nichts zurückgeben. Ich versuche, das Problem durch Hinzufügen von Joins nacheinander zu lösen. Jetzt wurde ich mit einer der Abfragen getroffen, da sie nichts zurückgeben und für immer ausgeführt werden. Die Abfrage verhält sich nach dem Hinzufügen der linken Verknüpfung, die SubQueries verwendet, um die Daten zu erhalten.
Anregungen herzlich geschätzt würde ..Access Query führt für immer
Antwort
Das Verbinden mit einer aggregierten Spalte (MaxOfColumn
) funktioniert wahrscheinlich nicht gut.
Ich schlage vor: fügen Sie das Ergebnis von [qry Aggregate Query]
in eine temporäre Tabelle ein. Verknüpfen Sie diese Tabelle stattdessen in Ihrer problematischen Abfrage.
Sie können dafür eine SELECT INTO-Abfrage (und löschen Sie die alte temporäre Tabelle) oder eine INSERT INTO-Abfrage verwenden (und die temporäre Tabelle vorher leeren).
bearbeiten
Sobald Sie es im Prinzip arbeiten haben, schlage ich eine Anfügeabfrage (INSERT INTO) mit Abfrage statt einer Tabelle erstellen.
So bleibt Ihre temporäre Tabelle an Ort und Stelle, und Sie können Indizes für die Felder hinzufügen, die Sie für JOINs verwenden, um die Leistung weiter zu verbessern.
die Hauptabfrage zu öffnen, tun Sie dann in VBA:
' Empty temp table
CurrentDb.Execute "DELETE * FROM Temptable"
' Run Append query
CurrentDb.Execute "NameOfYourAppendQuery"
' Open main query
DoCmd.OpenQuery "MainQuery"
Versuchen Hinzufügen von Indizes zu den Tabellen auf diesen Säulen:
[tbl ASDT P1T_AGENT_STAFF] - (STF_END_EFF_DT)
[qry List ASDT tbl ASDT P1T_AGENT_STAFF Active MAX END DATE] - (maxOfSTF_END_EFF_DT)
Obwohl es scheint, wie Sie sind nicht einmal diese Spalte, Sie es bereits auf maxOfSTF_END_EFF_DT
zur Verfügung haben Warum also zu diesem Tisch?
I 'STF_END_EFF_DT' Column.'STF_END_EFF_DT' ist bereits ein Index und' qry Liste ASDT Tabl ASDT P1T_AGENT_STAFF Aktiv MAX END zu bekommen am Beitritt DATE' ist Unterabfrage .. Irgendetwas, das ich hier vermisse? – Lara
Aber ist nicht 'STF_END_EFF_DT' =' maxOfSTF_END_EFF_DT'? Sie haben diese Information bereits. – sagi
- 1. Standardwert für Parameter Ms Access Query
- 2. Reg Access Query
- 3. Ms Access Query
- 4. Access 2007 CInt Query Problem
- 5. rerunning TestNG Test führt Testlauf für immer
- 6. Mehrere Kriterien in Access Query
- 7. Access Query Parameter Filtering Form
- 8. Access 2003 - VBA/query Fehlermeldung
- 9. Exclude doppelte Daten Access Query
- 10. Access Query gibt nicht zurück
- 11. Passport-Authentifizierung führt immer failureRedirect aus
- 12. MS Access SQL Query - Fehler beim Join
- 13. Microsoft Access Query über VBA wird wiederholt?
- 14. Wie schreibe ich Case-Sensitive Query für MS Access?
- 15. Access 2007, INSERT INTO (...) Werte (...) führt Syntaxfehler
- 16. Access Query Unterscheiden von Spalten mit Parameter
- 17. Count-Funktion in MS Access Query
- 18. Access Query erkennt keine Werte aus Unterabfragen
- 19. Query (ms access) drehen Zeilen Spalte
- 20. Access Query - korrektes Format für eine Anweisung in der MS Access-Abfrage
- 21. Senden von BroadcastIntent in application.onCreate() führt zum Booten für immer
- 22. AlarmManager führt BroadcastReceiver nicht immer aus
- 23. ConcurrentDictionary.GetOrAdd führt immer die Delegate-Methode aus
- 24. S.redredTo führt immer zu einem leeren Bildschirm
- 25. Query Cache für MySQL
- 26. Access Query SQL Anweisung von IIF mit OR
- 27. Access-Datenbank immer "Compact bei Abschluss" - Warum?
- 28. Führt LoaderManager.restartLoader() immer zu einem Aufruf von onCreateLoader()?
- 29. Datenparameter in Excel funktioniert nicht mit Access Query Verbindung
- 30. Ausgabe von MS Access Query nach Excel mit vba
@Lara: Lesen Sie, probieren Sie es aus. Es ist nicht so schwer. Abfragetypen: http://www.fmsinc.com/tpapers/queries/#Action_Queries. Erstellen Sie eine Kopie von '[Qry List ASDT tbl ASDT P1T_AGENT_STAFF Aktiv MAX ENDDATE]', ändern Sie es in eine ** Tabelle erstellen ** Abfrage. Starte es. Verwenden Sie stattdessen die resultierende Tabelle in Ihrer Hauptabfrage. – Andre
Danke für den Link Andre.Ich erstellte und führe Make Table.Now in der Abfrage aus. Sollen Joins wie 'LINKE VERBINDUNG [MakeTableName] ON [tbl ADW] .H10_STAFF_PARTY_ID = [MakeTableName] .STF_STAFF_PARTY_ID)' erfolgen. Ist es der richtige Weg? – Lara
@Lara: Ja, wo immer Sie gerade '' haben ASDT tbl ASDT P1T_AGENT_STAFF Active MAX ENDDATE] ', ersetzen Sie es durch' [MakeTableName] '. – Andre