有数百万条记录的SQLite中的高效分页

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (8)

我需要在列表视图中显示SQLite结果。当然,我需要传阅结果。

第一个选项是使用限制子句。例如:

SELECT * FROM Table LIMIT 100, 5000

它返回记录5001至5100。问题是,SQLite内部“读取”前5000条记录,而且效率不高。

当记录很多时,什么是分页的最佳方法?

提问于
用户回答回答于

请注意,必须始终使用ORDER BY子句;否则,只会得到一些随机顺序。

要执行有效的分页,请保存有序字段的第一个/最后显示的值,并在显示下一个页面时在它们后面继续:

SELECT *
FROM MyTable
WHERE SomeColumn > LastValue
ORDER BY SomeColumn
LIMIT 100;

(这一点将作更详细的解释。在SQLite wiki上)

当有多个排序列(以及SQLite 3.15或更高版本)时,可以使用行值比较为此:

SELECT *
FROM MyTable
WHERE (SomeColumn, OtherColumn) > (LastSome, LastOther)
ORDER BY SomeColumn, OtherColumn
LIMIT 100;

扫码关注云+社区