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

Reply via email to