AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Gibt's bei Access auch Ausführungspläne?
Thema durchsuchen
Ansicht
Themen-Optionen

Gibt's bei Access auch Ausführungspläne?

Ein Thema von Jumpy · begonnen am 4. Dez 2015 · letzter Beitrag vom 4. Dez 2015
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#1

Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 09:25
Datenbank: SQL Server • Version: ? • Zugriff über: Access
Hallo,

ich habe hier eine lange bestehende Anwendung, wo in ein Access-Frontend Tabellen, die auf einem SQL-Server (als Backend) liegen, eingebunden sind. Hatte hier jetzt eine komplizierte Abfrage (viele Joins usw.) die eigentlich recht performant lief (<1s). Nun ist an einer der Tabellen im Join etwas geändert worden (keine Ahnung was). Nachdem diese Tabelle in Access im Verknüpfuungs-Manager aktualisiert wurde, braucht die gleiche Abfrage auf einmal mehr als 20 Sekunden.

Wie kann ich dem auf die Spur kommen bzw. die Abfrage verbessern? Wie funktiert das überhaupt im Zusammenspiel Access<->SQL-Server. Führt Access die Abfragen aus (und optimiert die ggf.) oder wird das an den SQL-Server durchgereicht? Hat Access sowas wie einen Ausführungsplan und kann ich mir den angucken oder passiert das doch im SQL-Server, wie komme ich da an den Ausführungsplan?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 09:37
Vielleicht hilft das hier.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 10:29
Hab den Artikel gerade erstmal nur überflogen, aber das scheint mir schon genau das zu sein, was ich gesucht habe. Werde ich dann heue Nachmittag mal etwas mit experimentieren. Danke baumina
Ralph
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 11:39
Was ist denn genau langsamer?
- eine Passthroughabfrage nach SQLServer?
- eine heterogene Abfrage zwischen Accessdaten file und SQL Server`?
- ..

Die beiden wahrscheinlichsten Varianten:
Die Abfrage wird auf SQL Server einfach langsamer ausgeführt und das kann Access nicht wegzaubern. Müsste einfach nachvollziehbar sein, neuer Join, fehlender Index oder sowas.
Falls es eine Heterogene Abfrage ist, kann die mglw. nicht mehr (gut genug) remote aufgelöst werden. Also werden dann die Daten alle(!) nach Access runtergeladen (das dauert) und dann wird die heterogene Abfrage zu einer lokalen.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 12:17
Musste Passthroughabfrage erstmal googeln und denke, das ist es in unserem Fall nicht.
Wir haben die Tabellen als Veknüpfte Tabellen in Access und die Abfrage ist in Access selber.

Vielleicht zur Abfrage, die wie gesagt selber nicht geändert wurde (nur die betroffenen Tabellen):

SQL-Code:
Select "div. Felder von a,b,c"
From TabelleA a
Left Join TabelleB b on ..
Left Join TabelleC c on ..
Union
Select "div. Felder von a2,b,c"
From TabelleA2 a2
Left Join TabelleB b on ..
Left Join TabelleC c on ..
(keine Where-Bedingung ausser den Joins)!

Ich habe diese Mittlerweile optimiert (Laufzeit wieder <1s) zu:
SQL-Code:
Select
  div. Felder A,b,c
From
 (
  Select "div. Felder von a1"
  From TabelleA a1
  Union
  Select div. Felder von a2
  From TabelleA2 a2
 ) as A
Left Join TabelleB b on ..
Left Join TabelleC c on ..
Versuche aus Neugier aber immernoch auf das Problem zu kommen. Sprich nehme ich eine alte Access-Datei, wo TabelleB noch nicht mit dem Verknüfungs-Manager aktualisiert wurde, ist die Abfrage schnelle. Aktualisiere ich jetzt die Verknüpfung zu TabelleB ist die Abfrage langsam.
Ralph
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 12:40
Union sortiert, um eventuelle Dubletten in der Ergebnismenge zu entfernen.

Können bei der Abfrage überhaupt Dubletten entstehen?

Wenn grundsätzlich nein, dann Union all nehmen, spart die, in dem Fall, unnütze Sortierung. Und die kann bei großen Datenmengen schonmal ein bisserl dauern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 14:06
Musste Passthroughabfrage erstmal googeln und denke, das ist es in unserem Fall nicht. Wir haben die Tabellen als Veknüpfte Tabellen in Access und die Abfrage ist in Access selber.
Ich hab keine Ahnung, wie (schlau) Access mit verknüpften Tabellen umgeht, aber wenn es eh alles Serverdaten sind, spricht nichts gegen eine PassThroughAbfrage, dann hast Du 100% echte Serverleistung inkl. SQL Server Ausführungsplan.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 14:33
Musste Passthroughabfrage erstmal googeln und denke, das ist es in unserem Fall nicht. Wir haben die Tabellen als Veknüpfte Tabellen in Access und die Abfrage ist in Access selber.
Ich hab keine Ahnung, wie (schlau) Access mit verknüpften Tabellen umgeht, aber wenn es eh alles Serverdaten sind, spricht nichts gegen eine PassThroughAbfrage, dann hast Du 100% echte Serverleistung inkl. SQL Server Ausführungsplan.
Stimmt. Damit könnte ich das vielleicht nochmal etwas beschleunigen. Werd ich mal versuchen.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Gibt's bei Access auch Ausführungspläne?

  Alt 4. Dez 2015, 16:43
Wie funktiert das überhaupt im Zusammenspiel Access<->SQL-Server.
Das mochte so mancher gerne wissen.
Mit passthrough könntest Du Erfolg haben. Auf der anderen Seite habe ich es oft genug erlebt, daß Access den 5..x Join in den falschen Hals bekommt und die Abfrage ewig läuft. da half nur alles neu aufzubauen. Gleiches gillt für Tabellen die in Access liegen (Artikelnummern) und die als Einschränkung der Serverdaten dienen. Da war es am besten, die lokale Tabelle erst zum Schluß zu joinen.
(klingt fürchterlich und ist fürchterlich)

Gruß
k-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz