Office: (Office 2013) Abfrage 2 Tabellen aus 2 SQL Datenbanken sehr langsam

Helfe beim Thema Abfrage 2 Tabellen aus 2 SQL Datenbanken sehr langsam in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo liebe Community, ich habe ein riesen Problem. Ich kombiniere in einer Abfrage (für Endlosformular) 2 Tabellen aus 2 getrennten SQL Datenbanken.... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von PNG75, 14. März 2018.

  1. Abfrage 2 Tabellen aus 2 SQL Datenbanken sehr langsam


    Hallo liebe Community,

    ich habe ein riesen Problem. Ich kombiniere in einer Abfrage (für Endlosformular) 2 Tabellen aus 2 getrennten SQL Datenbanken. Das geht auch alles (Erster Abruf auch schnell), nur beim Filtern wird es dann enorm langsam.

    Wie kann ich das umgehen oder ist es einfach nicht performant umzusetzen, 2 getrennte Datenbanken in Abfragen gleichzeitig anzusprechen?

    Sollte ich die Datenbanken fusionieren oder lässt sich das vermeiden?


    Die Tabellen sind über ODBC verbunden.


    DANKE!!!!

    :)
     
  2. Was sind bei Dir SQL Datenbanken konkret?

    Filtern ist nicht gleich Filtern. Wie sieht es aus mit Indexnutzung?
     
  3. es sind mySQL datenbanken. Beide beim selben Provider, über VPN verbunden, aber separate Datenbanken.

    Indizes helfen hier nicht weiter...

    Ich glaube es ist generell langsam wenn ich noch Tabellen in Access mit Abfragen verbinden muss als Datenquelle. Ich glaube das ist der Haken. Ansonsten nehme ich immer VIEWs, die ich im MySQL Backend zusammenbaue, da treten die Probleme nicht auf. Nur hier muss ich leider die Tabellen in Access Abfragen kombinieren. Also wie kann ich das lösen?! :S
     
  4. Abfrage 2 Tabellen aus 2 SQL Datenbanken sehr langsam

    Hallo,
    das ist eine gewagte Behauptung.
     
    gpswanderer, 15. März 2018
    #4
  5. soll ich alle Felder indizieren oder nur die, die gefiltert werden?

    Falls alle, soll ich wirklich 20-30 Indizes anlegen? ich kann es mal versuchen...
     
  6. Hallo,
    nur die die gefiltert werden.
     
    gpswanderer, 15. März 2018
    #6
  7. Nicht nebenbei:
    Einen Index müsste man auch nutzen, nicht nur haben. Also spielt da auch das Abfragedesign eine Rolle.
     
  8. Abfrage 2 Tabellen aus 2 SQL Datenbanken sehr langsam

    könntest du mir das etwas genauer erklären bitte?

    Also ich habe jetzt eine Access Abfrage auf die 2 vernüpften MySQL Tabellen mit Join, diese wiederum sind VIEWs die in phpMyAdmin angelegt sind.

    Wie genau "nutze" ich jetzt die Indizes?*boah

    PS: ich bin Amateur ist mir schon klar*biggrin.gif*
     
  9. Du könntest damit beginnen, Dir den Inhalt des Links in #2 inhaltlich zu erschließen, manchmal hilft auch ein mehrmaliges Durchlesen mit einer Sauerstoffdusche dazwischen. In dem Text ist ein weiterer Link mit dann konkreteren Infpormationen ...

    Für solch ein "fundiertes" Urteil kann man doch die Gründe gleich mitliefern. Dann riecht es nicht so nach Abwehr- und Schutzbehauptung.
     
  10. meine Antwort war so gemeint, dass ich die Indizes bereits vergeben habe, aber vermutlich nutze ich sie falsch wie du in deinem artikel beschreibst, davon hatte ich keine ahnung.

    ich lese mir das durch und hoffe es so gelöst zu bekommen, danke sehr *Smilie

    und bitte verzeihe meine unwissenheit, es ist noch kein meister vom himmel gefallen *tongue.gif*
     
  11. Du hast die kritischen Punkte hier sehr gut zusammengefasst.

    Ein paar Denkansätze.

    1.) Sind es "nur" separate Datenbanken oder liegen diese auch auf verschiedenen Servern? - Man kann durchaus Tabellen aus verschiedenen DBs (auf dem gleichen Server) in einer MySQL-View verwenden.
    Selbst wenn es verschiedene Server sind, die sich aber im gleichen Rechenzentrum befinden, gibt es die Möglichkeit in MySQL Federated Tables zu verwenden, die sicherlich unter den Umständen eine wesentlich bessere Performance liefern, als die Daten in lokalen Access-Abfragen zusammenzuführen.

    2.) Wenn die obigen Ansätze allesamt nicht möglich sind, würde ich versuchen, dass du deine Access Abfragen so gestaltest, dass möglichst die einzelnen Tabellen für sich gefiltert werden, und erst dann in Access der Join der Daten passiert.
    D.h. erstmal je eine Abfrage auf die entsprechende Tabelle mit den dafür geltenden Kriterien und dann obendrüber die zusammenfassende Abfrage.
    Schwierig ist dabei, dass du nicht einfach Filter auf oberster Ebene anwenden kannst, sondern diese auf den untergeordneten Einzelabfragen angewendet werden müssen.

    Beide Ansätze sollten dazu führen, dass die Indizes sehr wohl weiterhelfen!
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  12. Vielen Dank *Smilie

    diese Federated Tables klingen nach der perfekten Lösung, aber ich habe die DBs bei All Inkl und befürchte dass das da nicht geht, ich habe beim Support angefragt. Sie müssten auf demselben Server liegen, da sie unter derselben Vertragsnr. laufen.

    Ich denke auch mein selbstgebauter Echtzeitfilter (Endlosformular) ist performance technisch eine Katastrophe (mit Like und * *boah ), auch wenn er sonst perfekt läuft und die Performance bisher ausreichend war.
    Aber da nun auch noch eine Abfrage in Access davorgeschaltet ist, scheinen genau an dieser Stelle enorme Performanceprobleme zu entstehen.


    Punkt 2 ist auch sehr interessant, aber recht aufwendig mein Frontend dahingehend anzupassen. Wäre aber vielleicht immernoch besser als die DBs zu fusionieren.
     
  13. Abfrage 2 Tabellen aus 2 SQL Datenbanken sehr langsam

    Die Umformulierung einer Abfrage ist jetzt keine Komplett-Neugestaltung eines Frontends, sondern eine punktuelle Korrektur.
     
  14. Also ich frage mich woher du weißt, wie aufwendig diese Anpassung in meiner Datenbank wäre, ohne zu wissen wie viele Endlosformulare und Filterfunktionen ich habe, aber gut. Es ist jedenfalls weit mehr als die Änderung einer Abfrage und wäre enormer Aufwand.


    Jetzt nochmal zum eigentlichen Problem, denn die genaue Filterfunktion ist gar nicht mein Problem. Ich habe folgendes festgestellt:


    Access Abfrage mit JOIN auf diese 2 Tabellen geht sehr schnell (0,5 Sekunden)

    Dieselbe Abfrage mit einem "where left(SPALTE,1)=1" dauert gleich 5 Sekunden, also 10x so lange, nur wegen einer winzigen Where Bedingung. Die Spalte ist indiziert.

    Bedeutet: Alle "WHERE" oder "LIKE" Ansätze laufen katastrophal langsam im Vergleich zum normalen Aufrufen der JOIN-Abfrage.


    Das kann doch nicht sein?! Da muss doch ein simpler Fehler vorliegen oder?
     
  15. Hallo!

    Ja, der Fehler liegt an der Deaktivierung der Index-Nutzung durch den berechneten Ausdruck.

    Code:
    Der Index auf SPALTE kann nicht genutzt werden, da zuerst left(..., 1) berechnet werden muss. (BTW: Left gibt einen Text zurück => Vergleichswert muss auch ein Text sein => where left(SPALTE,1)='1')

    Besser:
    Code:
    Ansonsten:
    Ist das nur die Zeit zum Öffnen der Abfrage oder die Zeit, nachdem alle Datensätze geladen sind?

    mfg
    Josef
     
    Josef P., 16. März 2018
    #15
Thema:

Abfrage 2 Tabellen aus 2 SQL Datenbanken sehr langsam

Die Seite wird geladen...
  1. Abfrage 2 Tabellen aus 2 SQL Datenbanken sehr langsam - Similar Threads - Abfrage Tabellen SQL

  2. 3 Accesstabellen in eine neue Access Tabelle (nicht Abfrage) zusammenfügen

    in Microsoft Access Hilfe
    3 Accesstabellen in eine neue Access Tabelle (nicht Abfrage) zusammenfügen: Hallo, ich habe folgendes Problem: Ich habe 3 Tabellen in Access importiert und möchte diese ohne Abfrage in eine neue Accesstabelle zusammenfügen. Es müssen auch mehr Tabellen zusammengefügt...
  3. Automatisch aktualisierende Tabelle? Hilfe!! :-)

    in Microsoft Excel Hilfe
    Automatisch aktualisierende Tabelle? Hilfe!! :-): Hallo zusammen, ich habe da ein kleines Excel-Problem und komme einfach nicht auf die Lösung. Ich habe 25 riesige Tabellen und möchte diese in einer Tabelle zusammen, wenn eine bestimmte...
  4. Abfrage von Datensetzen unter Ausschluss von Datensätzen anhand anderer Tabelle

    in Microsoft Access Hilfe
    Abfrage von Datensetzen unter Ausschluss von Datensätzen anhand anderer Tabelle: Hallo liebe Forumsgemeinde, Nachdem ich mich in diverse Themen bezüglich Access eingearbeitet habe, habe ich erfolgreich schon einige Teilabschnitte meines aktuellen Projekts umgesetzt....
  5. Bestimmte Daten zwischen innerhalb eines Datumsbereichs einer Tabelle Anfügen

    in Microsoft Access Hilfe
    Bestimmte Daten zwischen innerhalb eines Datumsbereichs einer Tabelle Anfügen: Hallo, ich habe per Google und Foren SuFu leider nichts passendes finden können, wage aber zu bezweifeln, dass Access da an seine Grenzen kommt, da es eigentlich recht banal ist. Ich habe eine...
  6. Primärschlüssel/Fremdschlüssel aus 2.Tabelle automatisch einfügen

    in Microsoft Access Hilfe
    Primärschlüssel/Fremdschlüssel aus 2.Tabelle automatisch einfügen: Hallo zusammen, ich stehe gerade vor dem Problem, dass ich die Datensätze zwischen zwei Tabellen nicht verknüpfen kann. Konkret habe ich die beiden Tabellen tblEigenschaft und tblBasis. In der...
  7. Formel in Tabelle einer Abfrage automatisch erweitern

    in Microsoft Excel Hilfe
    Formel in Tabelle einer Abfrage automatisch erweitern: Hallo Zusammen, ich habe ein Blatt auf welches eine Tabellenabfrage auf eine andere Exceldatei läuft. Die Tabelle der Abfrage wurde mit weiteren Spalten erweitert in welcher Formeln sind die die...
  8. VBA: SQL Abfrage ausführen und Resultat in eine Tabelle schreiben

    in Microsoft Access Hilfe
    VBA: SQL Abfrage ausführen und Resultat in eine Tabelle schreiben: Hallo Wie kann ich eine SQl Abfrage via VBA ausführen und danach den Wert in eine VBA Variable schreiben? Ich habe es so versucht: Code: Dim qdf As DAO.QueryDef Dim strSql As String Dim...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden