sqlite是否支持为每个查询读取特定数量的行?

时间:2013-09-30 23:09:06

标签: android sqlite sql-limit

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

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

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

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

2 个答案:

答案 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指定要返回的行集。

然而:

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

  2. 使用Traceview等工具来确定需要多长时间,并使用它来确定要获取的行数。 20似乎很烦人。

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