Subject Re: [IBO] Paradox conversion
Author Robert Martin
Hi

Thanks for the detailed reply. Unfortunately it must be a query (not a
table) because it the user can add in / remove fields at run time. The
database has been restructured to a 'proper' normalised structure and
now supports functionality the old system could not. I just need to
have it fast enough that the client doesn't feel it is 'slow'.

I have managed to get some additional performance by removing an index !

The client will be in in an hour so I will see what happens :)

Cheers
Rob


On 8/08/2014 12:43 p.m., 'IBO Support List' supportlist@...
[IBObjects] wrote:
> Rob,
>
> If you use a TIBOTable and you have both ascending and descending indexes on
> the IndexFieldNames column entries then you will be able to virtualize the
> dataset and have paradox-like scrolling performance. IBO will automatically
> employ what is called horizontal dataset refinement.
>
> It is true that they lose the accurate scrollbar, but that is unavoidable. I
> think they will be ok with that since it does dynamically adjust as records
> are brought into the buffer. IBO simply buffers all the records they have
> fetched into the dataset. I don't have a way to cycle old records out. You
> simply just call InvalidateRows if you want the buffer purged to reclaim
> memory without interfering with the operations of the dataset. In other
> words, critical buffer entries will be preserved. For example, if you have
> cached updates, those will remain.
>
> When horizontal dataset refinement is in action then your calls to Locate()
> will be very fast as well. It will not cause an auto-fetch-all type action.
> It will simply move the record pointer to the middle of the dataset and you
> will have a cursor to bring in more records if you scroll in either
> direction. If you call the Last method it simply starts fetching records
> towards BOF and doesn't have to fetch in the entire dataset.
>
> IBO gets you as close to flat file performance as is possible so go for it
> and let us know how it goes. I'll be standing by to help you if you get hung
> up.
>
> Jason
> www.ibobjects.com
>
>
> -----Original Message-----
> From: IBObjects@yahoogroups.com [mailto:IBObjects@yahoogroups.com]
> Sent: Thursday, August 7, 2014 6:08 PM
> To: IBObjects@yahoogroups.com
> Subject: [IBO] Paradox conversion
>
> Hi
>
> I am re building some extremely old software to use Firebird instead of
> Paradox. The user is obsessed with performance and wants the new system
> to be as good as the old system. The old system was a flat table that
> copied data locally to the HDD at startup to give best performance so it
> is tricky to match that sort of performance.
>
> Anyway the issue I have is that the user wants the scrollbar to
> accurately represent the position in the table. To do this AutoFetchAll
> must be enabled (correct?). Enabling this means that sometimes 110,000
> records need to be populated, which even with FB 2.5 on my local
> machine, takes 2 and a bit seconds. I can massively improve performance
> by disabling the auto fetch all, however when the user tries a
> progressive search (using .locate()) the system has to fetch all the
> records and it is slow for the first search.
>
> I think I can convince the user to do away with the accurate scrollbar
> if I can convince him of the benefits. I am using TIBOQuery.
>
> My questions
>
> 1. Is there a way to run without AutoFetchAll where the data will
> display quickly and then continue downloading the data without stopping
> the app?
>
> 2. Setting RecordCountAccurate to False when AutoFetchAll is false
> gives a a scrollbar that updates with use. Does it also improve
> performance?
>
> 3. Can I increase the amount of records buffered when AutoFetchAll is
> false. If so I could do a halfway house, where not all records are
> buffered but more than default, so that when a progressive search starts
> it is faster.
>
> 4. Any other performance suggestions. I know it is hard for a
> relational db to compete with a flat file db with regards to strait grid
> display?
>
> p.s. The query is in a readOnlyTransaction and is set to readonly. The
> SQL is dynamically created and set in code.
>
> Cheers
> Rob
>
>
>
> ------------------------------------
> Posted by: Robert Martin <rob@...>
> ------------------------------------
>
> ___________________________________________________________________________
> IB Objects - direct, complete, custom connectivity to Firebird or InterBase
> without the need for BDE, ODBC or any other layer.
> ___________________________________________________________________________
> http://www.ibobjects.com - your IBO community resource for Tech Info papers,
> keyword-searchable FAQ, community code contributions and more !
> http://tracker.ibobjects.com - your portal to submit and monitor bug reports
> http://community.ibobjects.com - your portal to purchase and upgrade
> ------------------------------------
>
> Yahoo Groups Links
>
>
>
>
>
> ------------------------------------
> Posted by: "IBO Support List" <supportlist@...>
> ------------------------------------
>
> ___________________________________________________________________________
> IB Objects - direct, complete, custom connectivity to Firebird or InterBase
> without the need for BDE, ODBC or any other layer.
> ___________________________________________________________________________
> http://www.ibobjects.com - your IBO community resource for Tech Info papers,
> keyword-searchable FAQ, community code contributions and more !
> http://tracker.ibobjects.com - your portal to submit and monitor bug reports
> http://community.ibobjects.com - your portal to purchase and upgrade
> ------------------------------------
>
> Yahoo Groups Links
>
>
>
>
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2014.0.4744 / Virus Database: 3986/8000 - Release Date: 08/07/14
>
>