On Wed, 27 Jan 2016 23:01:50 +0100, "setysvar [email protected] [firebird-support]" <[email protected]> wrote:
> [..] On the other hand, there are cases > where EXECUTE BLOCK can help performance (note, I speak for 2.5, I know > nothing about Firebird 3): > > UPDATE <HugeTable> h > SET <AField> = (SELECT <AnotherField> FROM <TinyTable> t WHERE > h.<SelectiveIndexedField> = t.<SomeField>) > > is much slower than > > EXECUTE BLOCK AS > Declare variable a integer; > Declare variable b integer; > BEGIN > FOR SELECT DISTINCT <SomeField>, <AnotherField> > FROM <TinyTable> > INTO :a, :b do > UPDATE HugeTable > SET <AField> = :b > WHERE <SelectiveIndexedField> = :a; > END Out of curiosity: have you also compared this with using MERGE? Mark
