Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: damate am Juli 15, 2012, 17:59:58

Titel: Geschwindigkeit verbessern?
Beitrag von: damate am Juli 15, 2012, 17:59:58
Hallo zusammen,

ich habe folgende Abfrage erstellt:

SELECT Name
FROM Beteiligungen
WHERE ID IN
(
   SELECT ToID FROM VerwBeteiligungen
   WHERE UniqueFromId IN
   (
       SELECT UniqueID FROM VerwKunden
   WHERE BeteiligungenID = u2.ID

)
) AND Beteiligungen.Art = (Select ID FROM BeteiligungenArt WHERE ART = "Lohn und Gehalt") Order by Name DESC;


Für mich ist diese SQL-Abfrage recht simpel.. nur, dauert diese recht lang für die Ausfürhung (mehrere Sekunden)!
Wenn ich die Zeilen
   SELECT UniqueID FROM VerwKunden
   WHERE BeteiligungenID = u2.ID

nun durch ein
   SELECT UniqueID FROM VerwKunden
   WHERE BeteiligungenID IN
              (Select ID FROM .... )

ersetze, dauert die Abfrage je nach Anzahl der IDs noch länger (Anzahl variert hierbei um die 200.

Leider wird diese Abfrage recht oft ausgeführt, sodass sich dies dann schnell auf 3 Stunden summiert.

Gibt es eine Möglichkeit diese Abfrage schneller zu realisieren?

PS: Diese Abfrage ist ein Recordsource in einem Bericht. Also dauert es demnach 3 Stunden bis so ein Bericht fertig ist.. und beim Programmieren des Berichts ist sowas auch recht nervig.

Ich hoffe, das mir jemand helfen kann.
Einen schönen Sonntag euch allen =)

EDIT: Auf die verwendeten Spalten wurden Indizes erstellt aber es hat nix gebracht.
Titel: Re: Geschwindigkeit verbessern?
Beitrag von: ebs17 am Juli 15, 2012, 18:22:08
Du könntest (und solltest) Deine Tabellen per JOIN's miteinander verknüpfen.
Die von Dir gewählte Verschachtelung von Unterabfragen ist eher ungewöhnlich, und wenn Unterabfragen wiederholt ausgeführt werden müssen, summiert sich das halt.

MfGA
ebs