Subject | RE: [IBO] Slower than the BDE??? |
---|---|
Author | Jason Wharton |
Post date | 2004-07-30T22:33:47Z |
You may ought to look at the SQL trace code to find the reason why it is
this way.
Jason Wharton
-----Original Message-----
From: Ron Roberts [mailto:ron@...]
Sent: Friday, July 30, 2004 11:36 AM
To: IBObjects@yahoogroups.com
Subject: [IBO] Slower than the BDE???
Howdy -
Having recently converted my Delphi c/s application to IBO from the BDE, I'm
finding that in most areas I am running 2x to 3x faster than I did with the
BDE. However, I have discovered a few places where things have slowed a bit.
And I have one thing which has slowed substantially -- and in a most
counter-intuitive way.
Same computer, same database, same data, same server (Firebird 1.5), gdb
file is on the local hard drive accessed via TCP/IP -- the BDE version of my
application creates and executes this server-side procedure in 1:23 minutes
while the IBO version does it in 9:31. Its hard to imagine that there is any
difference at all since its a server-side procedure we are talking about.
But in the event someone has an idea about why this might be happening, here
is my slow-running code:
with MyIBOQuery do begin
SQL.Clear;
ParamCheck := FALSE;
Params.Clear;
SQL.Add('create procedure COPY_'+ExtractNumber(CISDtlTable));
SQL.Add('AS');
SQL.Add(' DECLARE VARIABLE id integer;');
SQL.Add(' DECLARE VARIABLE mp double precision;');
SQL.Add(' DECLARE VARIABLE rm varchar(256);');
SQL.Add(' DECLARE VARIABLE fo varchar(256);');
SQL.Add('BEGIN');
SQL.Add(' FOR select ct.CISID, ct.MILEPOST, ct.C_REMARKS, ct.C_INFO');
SQL.Add(' from CIS_TEXT ct, '+CISDtlTable+' dt');
SQL.Add(' where (ct.CISID = dt.CISID)');
SQL.Add(' and (ct.MILEPOST = dt.MILEPOST)');
SQL.Add(' into :id, :mp, :rm, :fo DO');
SQL.Add(' update '+CISDtlTable+' set C_REMARKS = :rm, C_INFO = :fo
where (CISID = :id) and (MILEPOST = :mp);');
SQL.Add('END;');
ExecSQL;
SQL.Clear;
SQL.Add('execute procedure COPY_'+ExtractNumber(CISDtlTable));
ExecSQL;
end;
Thanks in advance for any pointers.
-- Ron
this way.
Jason Wharton
-----Original Message-----
From: Ron Roberts [mailto:ron@...]
Sent: Friday, July 30, 2004 11:36 AM
To: IBObjects@yahoogroups.com
Subject: [IBO] Slower than the BDE???
Howdy -
Having recently converted my Delphi c/s application to IBO from the BDE, I'm
finding that in most areas I am running 2x to 3x faster than I did with the
BDE. However, I have discovered a few places where things have slowed a bit.
And I have one thing which has slowed substantially -- and in a most
counter-intuitive way.
Same computer, same database, same data, same server (Firebird 1.5), gdb
file is on the local hard drive accessed via TCP/IP -- the BDE version of my
application creates and executes this server-side procedure in 1:23 minutes
while the IBO version does it in 9:31. Its hard to imagine that there is any
difference at all since its a server-side procedure we are talking about.
But in the event someone has an idea about why this might be happening, here
is my slow-running code:
with MyIBOQuery do begin
SQL.Clear;
ParamCheck := FALSE;
Params.Clear;
SQL.Add('create procedure COPY_'+ExtractNumber(CISDtlTable));
SQL.Add('AS');
SQL.Add(' DECLARE VARIABLE id integer;');
SQL.Add(' DECLARE VARIABLE mp double precision;');
SQL.Add(' DECLARE VARIABLE rm varchar(256);');
SQL.Add(' DECLARE VARIABLE fo varchar(256);');
SQL.Add('BEGIN');
SQL.Add(' FOR select ct.CISID, ct.MILEPOST, ct.C_REMARKS, ct.C_INFO');
SQL.Add(' from CIS_TEXT ct, '+CISDtlTable+' dt');
SQL.Add(' where (ct.CISID = dt.CISID)');
SQL.Add(' and (ct.MILEPOST = dt.MILEPOST)');
SQL.Add(' into :id, :mp, :rm, :fo DO');
SQL.Add(' update '+CISDtlTable+' set C_REMARKS = :rm, C_INFO = :fo
where (CISID = :id) and (MILEPOST = :mp);');
SQL.Add('END;');
ExecSQL;
SQL.Clear;
SQL.Add('execute procedure COPY_'+ExtractNumber(CISDtlTable));
ExecSQL;
end;
Thanks in advance for any pointers.
-- Ron