2013-01-10 3 views
3

나는 그것의 행을 스트리밍하려는 SQLite 테이블 (100000 개 이상의 행)이 있습니다.안드로이드 커서에서 행을 스트리밍

내가 할 :

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

문제는 것처럼 첫 번째 행을 받고 있다는 것입니다 :

cursor.moveToFirst() 

는 매우 느리다, 전체 테이블을로드 할 것으로 보인다.

첫 번째 행을 가져올 때 모든 행을로드 할 때까지 기다리지 않고 쿼리를 스트리밍 할 수 있습니까?

안드로이드 Cursor은 캐싱에 대한 모든 데이터를로드하도록 설계

답변

1

(I 안드로이드 이외의 일반 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

관련 문제