我的 Android 应用程序有一个活动来显示 SQLite 数据库中的数据。db 表可能包含大量行。出于性能原因,我想一次从 db 加载 20 行,当用户向下滚动 listview 到最后时,读取接下来的 20 行。
所以我想使用这样的 SQL 语句:
select * from mytable where id > N and count = 20;
我只是想知道 SQLite 是否支持这种"count=20"
功能来读取最多 20 行的查询。如果支持,确切的语法是什么?
是的,它确实。它被称为LIMIT
:
SELECT *
FROM mytable
WHERE id > N
LIMIT 20
您还可以使用可选OFFSET
子句从特定行开始:
SELECT *
FROM mytable
WHERE id > N
LIMIT 20
OFFSET 100
您可以使用LIMIT
andOFFSET
来指定一组要返回的行。
然而:
如果其他线程可能正在更新数据库,这是有风险的,特别是如果您的查询将使用ORDER BY
.
使用 Traceview 之类的工具来真正确定需要多长时间,并使用它来确定要获取的行数。20 看起来很烦人。
如果您的“表格可能包含大量行”,您应该专注于搜索界面,而不是期望人们通过一些足够长的列表线性浏览以保证这种批处理。