On 7 Oct 2011, at 7:17pm, Roger Binns wrote:

> On 07/10/11 09:52, Simon Slavin wrote:
>> "Do you really want to see all 50,000 entries that that search would
>> return ?".  If this kind of search returns more than 100 records,
>> there's no point in doing it at all.
> 
> You can solve this at the user interface layer and there is no need to
> calculate how many matching records there are.
> 
> Lets say you can show 50 results on the screen.  Run the query but leave
> it open until hitting the 51st result.  Show the 50 results on the screen
> with a More button.

It's not quite the problem I have.  My problem is that there is a huge amount 
of data involved in finding the 50,000 matches and merely processing the SELECT 
is very slow.  And SQLite has to find all 50,000 before it can show the first 
screen of matches.

Imagine you're watching _CSI_ on TV and they have a test that identifies 
possible matches to something ... car colours and tyres perhaps.  If there are 
only 50 possible matches, it's worth getting printouts and eliminating them one 
by one.  If there are 50,000 possible matches there's no point.

My problem really seems to be with the way SQLite implements LIMIT n.  If I 
understand previous posts on this list correctly, instead of finding only the 
first n records, it does the entire search first, then returns the first n of 
the results it found.  With a standard implementation I would simply do a 
search with a LIMIT 51 clause.  If 51 results are returned then I know the 
search is useless.  But even with a LIMIT clause SQLite will still do all the 
fetching involved in all 50,000 records.

Simon.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to