こんにちは、私はかなり新しくSQLite
、プロジェクトでいくつかのデータベース操作に対処しようとしています。
ほぼ4000行のテーブルがあり、これはすべての行の形式です:
problem_id (string)
problem_no (string)
problem_title (string)
dacu (int)
problem_no
に基づいて一連のクエリを実行する必要がありますproblem_id
。クエリの量は、一度にほぼ 1000 です。そこで、次のようなクエリ コードを作成しました。
Set<Integer> getProblemsTitle(HashSet<String> problemsIDs) {
SQLiteDatabase db = this.getReadableDatabase();
HashSet<Integer> problemNo = new HashSet<Integer>();
Cursor cursor = null;
for (Iterator<String> iterator = problemsIDs.iterator(); iterator.hasNext();) {
cursor = db.query(CommonUtils.PROBLEM_TABLE, new String[] {
CommonUtils.KEY_PROBLEM_NO },
CommonUtils.KEY_PROBLEM_ID + "=?",
new String[] { iterator.next() }, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
problemNo.add(cursor.getInt(0));
}
cursor.close();
}
db.close();
Set<Integer> set = new TreeSet<Integer>(problemNo);
return set;
}
これが最適化されたスニペットではないことはわかっています。そして、クエリの実行時間を短縮するために、それを大幅に最適化する必要があります。中でやりAsyncTask
ましたが、時間がかかりすぎます。
より高速なパフォーマンスでこれを効率的に行うにはどうすればよいですか?