SQLite中的高效分页,可处理数百万条记录

vfh0ocws  于 2023-10-23  发布在  SQLite
关注(0)|答案(1)|浏览(186)

我需要在列表视图中显示SQLite结果。当然,我得把结果传出去。
第一个选项是使用LIMIT子句。举例来说:

SELECT * FROM Table LIMIT 5000, 100

它返回记录5001到5100。问题是SQLite内部“读取”前5000条记录,效率不高。
当有大量记录时,分页的最佳方法是什么?

ehxuflar

ehxuflar1#

请注意,您必须始终使用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;

相关问题