在数百万条logging中有效地分页SQLite

我需要在列表视图中显示SQLite结果。 当然,我需要分页的结果。

第一个选项是使用LIMIT子句。 例如:

SELECT * FROM Table LIMIT 100, 5000 

它返回logging5001到5100.问题是内部SQLite“读取”前5000个logging,并不是太高效。

有很多logging时,寻呼的最佳方法是什么?

请注意,您总是必须使用ORDER BY子句; 否则,你只是得到一些随机的顺序。

要进行高效分页,请保存有序字段的第一个/最后一个显示值,并在显示下一页时继续:

 SELECT * FROM MyTable WHERE SomeColumn > LastValue ORDER BY SomeColumn LIMIT 100; 

(这在SQLite wiki上有更详细的解释。)

当你有多个sorting列(和SQLite 3.15或更高版本),你可以使用这个行值比较 :

 SELECT * FROM MyTable WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther) ORDER BY SomeColumn, OtherColumn LIMIT 100;