Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 12:41
Firebird ist in manchen ingen anderen Datenbanken wie MariaDB usw. unterlegen. Bei MariaDB kann ich mit CREATE TEMPORARY TABLE ´PARKPLATZ´ FOR SELECT DISTINCT ... einen solchen Parkplatz bauen wie im Eingangspost angedacht. Bei Firebird ist das deutlich mehr Arbeit.
Ich denke aber, der Aufwand ist überschaubar...
SQL-Code:
CREATE GLOBAL TEMPORARY TABLE TMP$ID (
    ID PK NOT NULL) ON COMMIT PRESERVE ROWS;
ALTER TABLE TMP$ID
ADD CONSTRAINT PK_TMP$ID
PRIMARY KEY (ID);
In der SP dann:

SQL-Code:
delete from tmp$id; -- vorsichtshalber
insert into tmp$id select distinct 'idfrom andereprozedur(irgendeinparameter);
for select * from a where not a.feld1 in (select id from tmp$id) into....
do
begin
end;
Das bringt aber nur viel, wenn die andereprozedur tatsächlich langsam ist.
Um das richtig abzuschätzen, müsste man wisse, was andereprozedur macht.
Wäre der Select in andereprozedur ein indexierter mit 10 Reads bei 10 Zeilen Rückgabe, dann kannst du alles lassen wie es ist.

Frank
Frank Reim
  Mit Zitat antworten Zitat