[EMAIL PROTECTED] wrote:
> Sorry if this is a silly question - I don't have much experience with  
> databases.
> 
> Say I have a table with many (millions+) of rows and I have a query:
> 
> SELECT * FROM mytable WHERE some_condition ORDER BY rowid
> 
> First, I'm assuming that in addition to whatever time some_condition  
> takes, I'll see an overhead of O( N log N ) for the sort in the worst  
> case, but probably much less (O(N) or O(1)?) because it's probably be  
> sorted anyway by rowid.  Is that correct?
> 
> My real question is if there is an efficient way to index the results  
> of such a query.  In other words, I'm looking for rows N through N+100  
> of the result.  Can I do much better than just executing the query and  
> throwing away the first N rows?  I thought of making an auxiliary  
> table to map rowid in the table with row number of the query for large  
> chunks of the table, but that can get to be a big memory footprint if  
> some_condition changes often.

Can't you just do:

SELECT * FROM mytable WHERE some_condition ORDER BY rowid LIMIT 100 OFFSET 0;

To get the first 100 rows?


-- 
Scott Baker - Canby Telcom
RHCE - System Administrator - 503.266.8253
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to