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