【发布时间】:2013-01-06 06:36:36
【问题描述】:
我需要在列表视图中显示 SQLite 结果。当然,我需要对结果进行分页。
第一个选项是使用 LIMIT 子句。例如:
SELECT * FROM Table LIMIT 100, 5000
它返回记录 5001 到 5100。问题是 SQLite 在内部“读取”前 5000 条记录,效率不高。
当有很多记录时,最好的分页方法是什么?
【问题讨论】:
标签: sqlite
我需要在列表视图中显示 SQLite 结果。当然,我需要对结果进行分页。
第一个选项是使用 LIMIT 子句。例如:
SELECT * FROM Table LIMIT 100, 5000
它返回记录 5001 到 5100。问题是 SQLite 在内部“读取”前 5000 条记录,效率不高。
当有很多记录时,最好的分页方法是什么?
【问题讨论】:
标签: sqlite
请注意,您始终必须使用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;
【讨论】: