2

我的 Android 应用程序有一个活动来显示 SQLite 数据库中的数据。db 表可能包含大量行。出于性能原因,我想一次从 db 加载 20 行,当用户向下滚动 listview 到最后时,读取接下来的 20 行。

所以我想使用这样的 SQL 语句:

select * from mytable where id > N and count = 20;

我只是想知道 SQLite 是否支持这种"count=20"功能来读取最多 20 行的查询。如果支持,确切的语法是什么?

4

2 回答 2

5

是的,它确实。它被称为LIMIT

SELECT *
FROM mytable
WHERE id > N
LIMIT 20

您还可以使用可选OFFSET子句从特定行开始:

SELECT *
FROM mytable
WHERE id > N
LIMIT 20
OFFSET 100
于 2013-09-30T23:16:02.753 回答
2

您可以使用LIMITandOFFSET来指定一组要返回的行。

然而:

  1. 如果其他线程可能正在更新数据库,这是有风险的,特别是如果您的查询将使用ORDER BY.

  2. 使用 Traceview 之类的工具来真正确定需要多长时间,并使用它来确定要获取的行数。20 看起来很烦人。

  3. 如果您的“表格可能包含大量行”,您应该专注于搜索界面,而不是期望人们通过一些足够长的列表线性浏览以保证这种批处理。

于 2013-09-30T23:16:17.573 回答