【问题标题】:Streaming rows from Android Cursor从 Android 光标流式传输行
【发布时间】:2013-01-10 20:21:22
【问题描述】:

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

我愿意:

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

问题在于,仅将第一行设为:

cursor.moveToFirst()

似乎要加载整个表格,速度很慢。

有没有办法在获取第一行时无需等待加载所有行就可以流式传输查询?

(就像我可以在 Android 之外使用普通的 C SQLite API 一样)

【问题讨论】:

    标签: android sqlite cursor


    【解决方案1】:

    Android Cursor 旨在加载所有数据以进行缓存。

    要解决此问题,您必须分步手动查询数据:

    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;
    

    【讨论】:

    • 我不知道 Android 不允许像许多数据库 API 那样使用这种用例。必须进行多个查询需要解析每个查询并为每个女巫构建查询计划会降低性能。我在 Android 数据库 API 中请求了这个用例:code.google.com/p/android/issues/detail?id=42605
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多