2017-10-15 20 views
0

このコードは、私のsqliteテーブルのすべてのエントリを読み込んでリストに入れます。スレッドのロード時間を短縮し、リストを返す前にjoin()ですべて終了するようにチェックしました。しかし、もし私がスレッドとしてquerysを行うと、私は2回エントリーを得る。SQLite forループで時間を短縮

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ループのクエリ時間を短縮するにはどうすればよいですか?

答えて

0

できません。

Sqliteはスレッドセーフではないため、SQLiteHelperはデフォルトでデータベースをロックします。

理由は、一度に1つの接続/トランザクションでしかアクセスできないためです。

は、使用して少し速くそれを作るためにつかむしたいフィールドを定義します。

SELECT field1,field2,anotherfield FROM tura_spieler 

あなたはまた、あなたの速度のaswellを後押しindexを持っている場合があります。

他のフィールドに基づいてフィールドを照会する場合は、そのフィールドに参加します。

you'rは、AndroidとSqliteをする新しいあなたは簡単に使用paging library

を提供 Roomと呼ばれる新しいAndroidライブラリに見てみる必要がある場合
関連する問題