您好,我很新,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
但是时间太长了。
我怎样才能以更快的性能有效地做到这一点?