🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.database.ado
Article #1278

Re: Slow performance with ADOQuery

#1278
From: Vic
Date: Fri, 10 Sep 2004 11:37
136 lines
5944 bytes
I'm trying to use bookmarks, First() and MoveBy(XX), but I only obtain a
slowest scroll.
Can you show me some example about how and in which listview's events i must
use the bookmarks and the other functions ?

"Viatcheslav V. Vassiliev" <support@oledbdirect.com> escribi� en el mensaje
news:41417741$1@newsgroups.borland.com...
> Client-side cursor caches all data in memory, so it is like copy recordset
> to memory. You may try to scroll recordset and cache bookmarks, and
instead
> of RecNo use Bookmark. Also calling First(), then MoveBy(XX) may increase
> speed because another mechanism is used.
>
> DBGrid caches some data for visible rows and this could speed up
displaying
> data.
>
> 40 000 records could occupy quite much memory (RAM in case of client
cursor)
> if there are many columns or there are BLOBs. If this is the problem, you
> may create temp Access db, copy data from SQL Server into this Access db
> (with SELECT .. INTO from Access db) and use use data from this database
> with server-side cursor (bookmarks are preffered over RecNo). This should
> work if your data will be up to ~1 GB.
>
> General recommendation is avoid using so large recordset with UI.
>
> //------------------------------------------
> Regards,
> Vassiliev V. V.
> http://www.managed-vcl.com - using .Net objects in Delphi for Win32 +
> ADO.Net
> http://www.oledbdirect.com - The fastest way to access MS SQL Server,
> MS Jet (Access) and Interbase (through OLEDB)
>
> "Vic" <victor@espainformatica.com> �������/�������� � �������� ���������:
> news:4140ac2b@newsgroups.borland.com...
> > > What is your DBMS?
> > > > Info : I'm using builder 6 and sqlserver 2000 in windows xp sp1.
> > SQL Server 2000 :)
> >
> > > What is cursor type (server or client)?
> > Client.
> >
> > > Is db server on local computer or remote?
> > db server is on a remote computer
> >
> > If you need more information ask me what you need?
> >
> > "Viatcheslav V. Vassiliev" <support@oledbdirect.com> escribi� en el
> mensaje
> > news:414095c6@newsgroups.borland.com...
> > > What is your DBMS? What is cursor type (server or client)? Is db
server
> on
> > > local computer or remote?
> > >
> > > //------------------------------------------
> > > Regards,
> > > Vassiliev V. V.
> > > http://www.managed-vcl.com - using .Net objects in Delphi for Win32 +
> > > ADO.Net
> > > http://www.oledbdirect.com - The fastest way to access MS SQL Server,
> > > MS Jet (Access) and Interbase (through OLEDB)
> > >
> > > "Vic" <victor@espainformatica.com> �������/�������� � ��������
> ���������:
> > > news:414078e5@newsgroups.borland.com...
> > > > I have a problem with the TADOQuery. In my project I need to read
> > records
> > > > ( about 40000 ) from some tables and show them in a list. For do it,
I
> > use
> > > a
> > > > virtual TListview (OwnerData = true) and the ADOQuery with a SQL
> > statement
> > > > to read from database. The process for reading records from the
> database
> > > to
> > > > the query is fast, it gets about 3 sec., and I use the event OnData
of
> > the
> > > > listview to show the records directly form the query.
> > > > Here is the code :
> > > >
> > > > void __fastcall TForm1::ListView1Data(TObject *Sender, TListItem
> *Item)
> > > > {
> > > >    ADOQuery->RecNo = Item->Index + 1;
> > > >
> > > >    for ( int i = 0; i < ListView1->Columns->Count; i++ )
> > > >    {
> > > >       if ( i == 0 )
> > > >             Item->Caption = ADOQuery->FieldByName("CODIGO")->Value;
> > > >       else
> > > >
> > > > Item->SubItems->Add(ADOQuery->FieldByName("NOMBREFISCAL")->Value);
> > > >    }
> > > > }
> > > >
> > > > Before show the records directly from the query, I tried to copy the
> > query
> > > > to my own list, and show the records from the list, but that process
> was
> > > > very very very slow. Then I decide to avoid the 'QueryToMemory'
> process.
> > > >
> > > > The problem that I have now is when I scroll the listview. While at
> the
> > > top
> > > > of the listiew the scrolling is fast, when I go to
> > > > the bottom of it the scrolling is much slower.
> > > >
> > > > I think that the problem should be here :
> > > >    ADOQuery->RecNo = Item->Index + 1;
> > > > because if I comment this line, the scroll process returns to the
> normal
> > > > performance, but ofcourse I can't comment this line.
> > > >
> > > > How can I solve that problem ?
> > > > Is it any other faster way to do what I need ?
> > > >
> > > > Thank you in advance.
> > > >
> > > > Info : I'm using builder 6 and sqlserver 2000 in windows xp sp1.
> > > > --
> > > > Victor
> > > > ESPA Inform�tica.
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Technical Details
Message-ID: <414191f5@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail
References: <414078e5@newsgroups.borland.com> <414095c6@newsgroups.borland.com> <4140ac2b@newsgroups.borland.com> <41417741$1@newsgroups.borland.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 10698b,f914d51d26714f04
X-Google-Attributes: gid10698b,public
X-Google-Language: ENGLISH,ASCII
Reply-To: "Vic" <Victor@espainformatica.com>
From: "Vic" <victor@espainformatica.com>
Newsgroups: borland.public.cppbuilder.database.ado
References: <414078e5@newsgroups.borland.com> <414095c6@newsgroups.borland.com> <4140ac2b@newsgroups.borland.com> <41417741$1@newsgroups.borland.com>
Subject: Re: Slow performance with ADOQuery
Date: Fri, 10 Sep 2004 13:37:28 +0200
Lines: 138
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
NNTP-Posting-Host: 80.24.136.172
Message-ID: <414191f5@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1094816245 80.24.136.172 (10 Sep 2004 04:37:25 -0700)
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail