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.
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