Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 20. Dez 2018, 13:31
Datenbank: Firebird • Version: 2.5.8 • Zugriff über: FIBPlus
Hallo!

Ich habe folgenden StoredProc-Body:
Code:
SELECT * FROM A WHERE NOT A.FELD1 IN (SELECT DISTINCT ´ID´ FROM AndereProzedur(IrgendeinParameter));
Ich frage mich jetzt, wie Firebird den Ablauf realisiert. Wird für jede einzelne Zeile in Tabelle A das SELECT DISTINCT... ausgeführt? Oder wird zuerst einmalig das Ergebnis aus AndereProzedur() geholt und dann immer gegen dieses Ergebnis geprüft? Hintergrund der Frage ist die Laufzeitoptimierung. AndereProzedur() ist nicht gerade von der schnellen Sorte, würde hier aber IMMER das selbe Ergebnis liefern. Falls Firebird also dieses Ergebnis für jede Zeile neu aus AndereProzedur() holen würde, dann müsste ich deren Ergebnis "zwischenparken". Also ungefähr so:
Code:
PARKPLATZ = (SELECT DISTINCT ´ID´ FROM AndereProzedur(IrgendeinParameter));
SELECT * FROM A WHERE NOT A.FELD1 IN PARKPLATZ;
Ich hoffe ihr versteht worauf ich hinaus will. Also eigentlich zwei Fragen: Erstens wie arbeitet Firebird diesen verschachtelten Query ab und zweitens, wie kann ich ein Unterergebnis in einer Variablen zwischenparken?

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat