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.

Does anyone have any suggestions?
        Thanks,
        Jeff
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to