我需要在列表视图中显示SQLite结果。当然,我得把结果传出去。第一个选项是使用LIMIT子句。举例来说:
SELECT * FROM Table LIMIT 5000, 100
它返回记录5001到5100。问题是SQLite内部“读取”前5000条记录,效率不高。当有大量记录时,分页的最佳方法是什么?
ehxuflar1#
请注意,您必须始终使用ORDER BY子句;否则,顺序是任意的。要进行有效的分页,请保存已排序字段的第一个/最后一个显示值,并在显示下一页时在它们之后继续:
ORDER BY
SELECT * FROM MyTable WHERE SomeColumn > LastValue ORDER BY SomeColumn LIMIT 100;
(This详细说明on the SQLite wiki。)当你有多个排序列(和SQLite 3.15或更高版本)时,你可以使用行值比较:
SELECT * FROM MyTable WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther) ORDER BY SomeColumn, OtherColumn LIMIT 100;
1条答案
按热度按时间ehxuflar1#
请注意,您必须始终使用
ORDER BY
子句;否则,顺序是任意的。要进行有效的分页,请保存已排序字段的第一个/最后一个显示值,并在显示下一页时在它们之后继续:
(This详细说明on the SQLite wiki。)
当你有多个排序列(和SQLite 3.15或更高版本)时,你可以使用行值比较: