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 'id' from 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