Firstly, for file base databases you really want to try and use 
components which properly marry up to the underlying access model.  This 
means for example file based databases you want to use TTable with 
Indexes and SetRange wherever possible to access, in preference to 
TQuery, since the BDE isn't really a very good "database engine" and 
doesn't really optimise queries.  As a result, it will often effectively 
perform an full linear file read/"table scan" whereas TTable with 
SetRange and FindKey/Locate would effectively merely position a cursor 
on a file handle.     However, In your case I'm not sure if you'll get 
full benefit via your access path (ie BDE to Access) as there might be 
some unholy translation going on.  A lot better would indeed probably be 
ADO, where the TADOTable is almost certain to properly access the 
underlying JET engine.  While I do not recommend anyone to use Paradox 
anymore, due to the status of it and the BDE, it is true that you'd have 
been far happier with it and the BDE than with Access and the BDE.  You 
can do some pretty efficient things with Paradox and the BDE, over even 
a slow network, when used carefully.  (But, as I've said, stay away from 
TQuery, and optimise access by using indexes and locates on the file 
yourself...)  

In actuality, 30Mb is IMO an almost paltry amount of data, compared to 
the amount of RAM and resources available on todays PC's and networks. 
What I mean by that is that if you are having complaints, it suggests to 
me that more data (all of it?) might perhaps be read by client machines 
than are really neccesary when going about their business, more 
frequently than is necessary (probably due to the inefficiencies 
introduced by the data access layer/components themselves.)   To put 
this comment in perspective:  A few years ago one of the system we look 
after was still Paradox/file based.  The total database size was at that 
point approximately 800Mb-900Mb or so.  The largest file/table was 
probably about 400Mb and contained approximately 1.8 million records, 
there were about 2 or 3 others near on a million records and most of the 
other significant ones were tens of thousands.  There were about 10-15 
concurrent users using this database over a 100Mbit LAN, and for the 
most part this worked exceedingly well, generally... Looking up records 
in the largest files/tables were still nearly instantaneous despite the 
size as they used suitable indexes together with TTable, FindKey and 
SetRange.  Things bogged down however with complicated reporting queries 
where tables had to be related to each other and you thus had no choice 
but to read large amounts of information over the network from multiple 
tables to produce reports (since obviously there were no centralised 
database server with the bandwidth to cope with such things).  The point 
is this is an order of magnitude more information that in your database 
and was still quite workable (just not with respect to the reporting 
requirements for the most part as well as a few other irritating 
management/maintenance problems), so I'm fairly sure you can improve 
your situation. 

Having said all that, it might just be worth your while to move to a 
client server based database sometime soon... (but that might be a lot 
of work...)

I guess I should've asked:  What type of machines are running this 
system (spec), how fast is the network, and can you give an idea of how 
you access the data in the database (what type of queries and so on)?

Hope that helps,

Walter



Dave Murray wrote:

>Hi,
>
>I've got a Delphi app that uses an Access database via BDE (Delphi 4
>so no ADO). At the moment there are about 600,000 records in the main
>table and it is growing by about 12,000 - 15,000 records a week. The
>database itself is currently over 30Mb in size. The app runs a lot of
>queries against the main table and has been slowing down as it grows.
>The speed is now getting to the point where the users are complaining.
>
>So am I reaching the limits of what I can do with an Access database?
>Would I get a speed increase by switching to Delphi 2006 and using ADO?
>Is it time to start looking at SQL Server?
>
>Thanks,
>Dave.
>
>  
>


-----------------------------------------------------
Home page: http://groups.yahoo.com/group/delphi-en/
To unsubscribe: [EMAIL PROTECTED] 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/delphi-en/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to