My old app. under BDE used OnFilterRecord to display a history. Under the BDE and Paradox tables with 25,000 records it was instant. Now under Nexus it takes 10 secs..Any ideas on speeding this up?
The explanation, *why* NexusDB is much much slower: The BDE is a working on local file. When setting a filter each record is loaded and the OnFilterRecord method is called direclty. In a C/S system (like NexusDB eg.) there's a bit more involved: you tell the server that you want to move to the next record. the server does this and answers back (over the network) the *physical next* record, the client is then doing the onFilterRecord calculation. if it matches fine, if not, it needs to request the next record over the network, the server again returns the next physical record, ...
With 25000 records to filter even with a very fast network (and latency of say half a ms) this needs quite some time (with half ms at least 25000 x 0.5 = 12 500 ms is 12.5 seconds) for filtering the whole dataset.
With setrange you just transfer the criteria to the server and the server deals with it using an index. If you don't have a matching index you can still speed the thing up a lot by using the normal filter property. In this case the filter evaluation takes place on the server and you shouldn't see too much a difference between BDE and NexusDB.