【问题标题】:SQLite reduce time in for loopSQLite 减少 for 循环中的时间
【发布时间】:2018-03-27 01:56:15
【问题描述】:

此代码读出我的 sqlite 表的所有条目并将它们放入列表中。我尝试使用 Threads 减少加载时间,并在返回列表之前检查所有线程是否已使用 join() 完成。但是,如果我以线程的形式进行查询,我会得到一些条目两次。

public ArrayList<ModelTura_spieler> getAllTura_spieler() {
    SQLiteDatabase db = this.getReadableDatabase();
    final ArrayList<ModelTura_spieler> tura_spielerList = new ArrayList<ModelTura_spieler>();
    String selectQuery = "SELECT * FROM tura_spieler";
    final Cursor c = db.rawQuery(selectQuery, null);

        for(c.moveToFirst(); c.getPosition()!=getTura_spielerCount()-1  ; c.moveToNext()){
                    ModelTura_spieler tura_spieler = getModelTura_spielerFromCursor(c);
                    tura_spielerList.add(tura_spieler);
                }
    return tura_spielerList;
}

如何用线程减少这个for循环的查询时间?

【问题讨论】:

    标签: java android multithreading sqlite


    【解决方案1】:

    你不能。

    Sqlite 不是线程安全的,这意味着您的 SQLiteHelper 默认会锁定您的数据库。

    原因是您一次只能通过一个连接/事务访问。

    使用以下方法定义您要抓取的字段以使其稍快一些:

    SELECT field1,field2,anotherfield FROM tura_spieler
    

    您可能还想拥有一个index 来提高您的速度。

    如果你想根据你想加入的其他一些字段来查询字段。

    如果您是 Android 和 Sqlite 的新手,您应该看看一个名为 Room 的新 android 库,它提供了一个易于使用的 paging library

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 2019-10-07
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 2011-10-29
      • 1970-01-01
      • 2018-02-04
      相关资源
      最近更新 更多