我需要在列表视图中显示SQLite结果.当然,我需要分页结果.
第一种选择是使用LIMIT子句.例如:
SELECT * FROM Table LIMIT 100, 5000
Run Code Online (Sandbox Code Playgroud)
它返回记录5001到5100.问题是内部SQLite"读取"前5000条记录并且效率不高.
当有大量记录时,分页的最佳方法是什么?
CL.*_*CL. 113
请注意,您必须始终使用ORDER BY条款; 否则,你得到一些随机的订单.
要进行有效的分页,请保存已排序字段的第一个/最后一个显示值,并在显示下一个页面后继续它们:
SELECT *
FROM MyTable
WHERE SomeColumn > LastValue
ORDER BY SomeColumn
LIMIT 100;
Run Code Online (Sandbox Code Playgroud)
(这在SQLite wiki上有更详细的解释.)
如果有多个排序列(以及SQLite 3.15或更高版本),则可以使用行值比较:
SELECT *
FROM MyTable
WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther)
ORDER BY SomeColumn, OtherColumn
LIMIT 100;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34856 次 |
| 最近记录: |