2013-01-10 45 views
3

我有一个SQLite表(超过100000行),我希望它的行流式传输。从Android游标流式传输行

我做的:

Cursor cursor = db.rawQuery("SELECT _id FROM hugetable", new String[] {}); 

的问题是,刚刚起步的第一行是:

cursor.moveToFirst() 

似乎加载整个表,是相当缓慢的。

有什么方法可以在不用等待读取第一行时加载所有行的情况下对查询进行流式处理?

回答

1

Android的Cursor被设计成装入所有数据用于高速缓存(如我可以与Android外纯C SQLite的API这样做)。

若要arouns这一点,你必须手动查询的步骤中的数据:

SELECT _id 
FROM hugetable 
ORDER BY _id 
LIMIT 100; 

SELECT _id 
FROM hugetable 
WHERE _id > last_id_from_previous_query 
ORDER BY _id 
LIMIT 100; 
+0

我不知道安卓没有让这个用例许多数据库API做。 必须进行多个查询需要解析每个查询并为每个巫师构建查询计划会降低性能。 我已经在Android数据库API中请求了这个用例: http://code.google.com/p/android/issues/detail?id=42605 – jcarlos