Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 3 of 3 total
Thread Filter on TDBISAMTable
Fri, Feb 8 2013 4:09 AMPermanent Link

Danie van Eeden

Hi,

this is going to sound kind of stupid Smile
but Im going to ask anyway.

When applying a filter (on an indexed text field, over network connection) the following happens (roughly 80 000 records in table):

1. First time I apply the Filter with

Table.Filter := 'field like ''%something%'''
Table.Filtered := True;

it takes quite some time (over network connection).
however when I replace the filter and apply it again its much faster

eg.

Table.Filter := 'field like ''%something else%'''
Table.Filtered := True;

I assume this is due to some sort of caching, but was wondering if there was anything I could do to speed up my partial filter the first time round.

Many thanks
Fri, Feb 8 2013 5:11 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Danie


>I assume this is due to some sort of caching, but was wondering if there was anything I could do to speed up my partial filter the first time round.

Your guess is almost certainly right (but the time could also include opening the table first), but there's not that much you can do to speed things up.  There are two (possibly three Tim would know) caches involved - Winidows & DBISAM (the third would be some sort of network cache). The only way of populating these is to do the work, then the cache may be emptied by something else needing it so no guarantees that the data will still be there.

I assume you're using file server rather than client server mode so what will have to happen is for DBISAM to at least transfer the index file over to the client PC, and then the data so there's that as a minimum.

You could try opening the table in a background thread and running a few queries / filters on it, but as I say above no guarantees the caches will contain the needed data when you want to tun your filter.

Roy Lambert [Team Elevate]
Fri, Feb 8 2013 7:08 AMPermanent Link

Danie van Eeden

Hi Roy,

thanks for the quick reply.

Danie

Roy Lambert wrote:

Danie


>I assume this is due to some sort of caching, but was wondering if there was anything I could do to speed up my partial filter the first time round.

Your guess is almost certainly right (but the time could also include opening the table first), but there's not that much you can do to speed things up.  There are two (possibly three Tim would know) caches involved - Winidows & DBISAM (the third would be some sort of network cache). The only way of populating these is to do the work, then the cache may be emptied by something else needing it so no guarantees that the data will still be there.

I assume you're using file server rather than client server mode so what will have to happen is for DBISAM to at least transfer the index file over to the client PC, and then the data so there's that as a minimum.

You could try opening the table in a background thread and running a few queries / filters on it, but as I say above no guarantees the caches will contain the needed data when you want to tun your filter.

Roy Lambert [Team Elevate]
Image