我需要在列表视图中显示SQLite结果。当然,我需要分页结果。
第一个选项是使用LIMIT子句。例如:
SELECT * FROM Table LIMIT 100, 5000
它返回记录5001到5100.问题是内部SQLite“读取”前5000条记录并且效率不高。
当有大量记录时,分页的最佳方法是什么?
答案 0 :(得分:108)
请注意,您必须始终使用ORDER BY
条款;否则,订单是任意的。
要进行有效的分页,请保存已排序字段的第一个/最后一个显示值,并在显示下一页时继续显示它们:
SELECT *
FROM MyTable
WHERE SomeColumn > LastValue
ORDER BY SomeColumn
LIMIT 100;
(更详细地解释on the SQLite wiki。)
如果您有多个排序列(以及SQLite 3.15或更高版本),则可以使用row value comparison:
SELECT *
FROM MyTable
WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther)
ORDER BY SomeColumn, OtherColumn
LIMIT 100;