update die 2

hallo (andreas),
ich nehme noch einmal bezug auf die letzte korrespondenz. eigentlich wollte ich ja keine select anweisungen, sondern ein einfaches update!
also in etwa so (wie schon zuvor gepostet, da fehlte nur da execute):

declare
x varchar;
begin
EXECUTE 'UPDATE test
SET a=b
from test2 where y = ’ || x;
end

das funktioniert ja auch, ist nur nicht performant. ich habe das auch schon einmal mit einer rule versucht, die ist genauso langsam.
meine insert to anweisungen sind in “250er blöcke” aufgeteilt:
begin;
insert to …(250 mal)
end;
begin;
insert to …(250 mal)
end;

usw. und immer wenn ein 250er block zu ende ist, knickt die performance ein.
wenn ich das update “händisch” über ein sql script ausführe geht das hingegen sehr schnell.
ich wäre für hinweise dankbar.
gruß jürgen

sorry, die anweisung sieht so aus:

declare
x varchar;
begin
EXECUTE ‘UPDATE test
SET a=b
from test2 where y = x’;
end

Meinst Du mich?

ich nehme noch einmal bezug auf die letzte korrespondenz. eigentlich wollte ich ja keine select anweisungen, sondern ein einfaches update!
also in etwa so (wie schon zuvor gepostet, da fehlte nur da execute):

declare
x varchar;
begin
EXECUTE 'UPDATE test
SET a=b
from test2 where y = ’ || x;
end

das funktioniert ja auch, ist nur nicht performant. ich habe das auch schon einmal mit einer rule versucht, die ist genauso langsam.

Was sagt den EXPLAIN ANALYSE dazu?

meine insert to anweisungen sind in “250er blöcke” aufgeteilt:
begin;
insert to …(250 mal)
end;
begin;
insert to …(250 mal)
end;

usw. und immer wenn ein 250er block zu ende ist, knickt die performance ein.

Er macht dann ein COMMIT, das braucht natürlich dann wohl etwas. Wenn Du so oft immer dasselbe aufrufst, wären PREPARED STATEMENTS sinnvoll.

wenn ich das update “händisch” über ein sql script ausführe geht das hingegen sehr schnell.
ich wäre für hinweise dankbar.
gruß jürgen

is a bissl schwer zu erkennen, was überhaupt Dein Problem ist…


Andreas