Subject Re: [firebird-support] How To Speed Up Update SQL
Author Kjell Rilbe
I've found that it often helps with an execute block when updates with
complex join-like filter conditions apply.

Something like this (untested):

set term #;
execute block as
declare PK yourprimarykeycolumntype;
begin
for
select MB.PRIMARYKEYCOLUMN
from MY_BOOK MB
inner join MY_BOOK_HEADER MBH
on MBH.PK_BOOK_HEADER = MB.SK_BOOK_HEADER
where Upper(Trim(MBH.HEADER_BOOK_CODE)) =
Upper(Trim('127518010109038'))
And MBH.FK_BOOK_GROUP = '{79B79C33-CE56-4084-912B-6DD9F70B3DC4}'
into :PK
do
update MY_BOOK MB
set BOOK_NAME = 'Book Name1' ,
BOOK_DESCRIPTION = 'Book Desfcription1'
where MB.PRIMARYKEYCOLUMN = :PK
end#
set term ;#

Kjell Rilbe
Telefon: 08-761 06 55
Mobil: 0733-44 24 64

Marknadsinformation i Sverige AB
Ulvsundavägen 106C
168 67 Bromma
www.marknadsinformation.se <http://www.marknadsinformation.se>
08-514 905 90

den 2015-10-14 11:21, skrev Vishal Tiwari vishualsoft@...
[firebird-support]:
> Hi All,
>
> I have 480 Update SQL statements which I am executing using ADScript
> component in Delphi 2010.
>
> Update SQL updates data in only one table called MY_BOOK, but there is
> a join with MY_BOOK_HEADER table. Below is the Update SQL, which is
> taking 81 seconds to execute all 480 Update SQL statements. Any idea
> how could I improve the speed of these 480 Update SQL statements ?
>
> Update SQL:
>
> Update MY_BOOK MB SET BOOK_NAME = 'Book Name1' , BOOK_DESCRIPTION =
> 'Book Desfcription1'
> Where MB.BOOK_TYPE = 4 And
> Exists (Select 1 from MY_BOOK_HEADER MBH
> Where
> Upper(Trim(MBH.HEADER_BOOK_CODE)) = Upper(Trim('127518010109038'))
> And MBH.FK_BOOK_GROUP = '{79B79C33-CE56-4084-912B-6DD9F70B3DC4}'
> And MBH.PK_BOOK_HEADER = MB.SK_BOOK_HEADER
> );
>
>
> Thanks In Advance.
>
> With Best Regards.
>
> Vishal
>