... That is 4100 records with maybe 20 fields per record. Then, when a paticular record is chosen from the table, I read the table's various fields to get the full data from that record.
Are you suggesting that I only load (say) the name/title of each record. Then, after the user has chosen a record from this field-limited list, I read that record's full data from the sqlite database?
All this reminds me that I don't think I ever got access to Sarah's tree database code... and that I didn't get far trying to convert one of my own table-control based programs to use SQL instead!
But it does sound as if you are using a visible table that contains much more data than is actually displayed. In which case reducing the table to include only the displayed fields, as Andrew suggests, should help.
An extreme case would be to abandon the handy and "intuitive" (meaning familiar) scrolling mechanism of a table control and limit the table to only a screen's worth of data of the name/title field(s). Then scrolling through more of the data would have to be done using a separate (set of) scroll control and re-populating the visible table from the SQL accordingly.
Erel is often telling us that SQL is much more efficient than a table control, so perhaps a "simulated scrolling" mechanism, as it might be described, could be quite generally useful; maybe someone has already written one?
Mike.