On 3-3-2018 17:43, setysvar setys...@gmail.com [firebird-support] wrote:
> The execute blocks had similar similar content to:
> 
> for select mt.PK
> from <temporary table> tt
> join <normal table> mt on <join criteria>
> where mt.integerfield = 1 into :PK do
> begin
>     suspend;
>     update <normal table>
>     set field1 = 'K', field2 = '-'
>     where pk = :pk;
>     MyCount = MyCount + rows_affected;
> end
> 
> The join criteria were
> 
> (slow)
> tt.VarChar40 = mt.VarChar40
> 
> (quick)
> tt.int1 = mt.int1 and tt.int2 = mt.int2
> 
> Running the select part without the update is quick in both cases.
> 
> Can anyone enlighten me regarding what the cause of the performance
> difference may be? I'm simply puzzled and clueless...

What happens if you use MERGE instead of doing the updates 'manually', 
or if you remove the SUSPEND statement? Which columns is the EXECUTE 
BLOCK returning?

Mark
-- 
Mark Rotteveel
  • [firebird-suppo... setysvar setys...@gmail.com [firebird-support]
    • Re: [fireb... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
      • Re: [f... Svein Erling Tysvær setys...@gmail.com [firebird-support]

Reply via email to