3

行をストリーミングしたい SQLite テーブル (100000 行以上) があります。

そうです:

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

問題は、最初の行を次のように取得することです。

cursor.moveToFirst()

テーブル全体をロードしているようで、かなり遅いです。

最初の行をフェッチするときにすべての行をロードするのを待たずにクエリをストリーミングする方法はありますか?

(Android 以外のプレーンな C SQLite API でできるように)

4

1 に答える 1

1

AndroidCursorは、キャッシュ用にすべてのデータをロードするように設計されています。

これを回避するには、次の手順でデータを手動でクエリする必要があります。

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;
于 2013-01-10T21:50:11.473 に答える