【发布时间】:2013-01-24 03:54:32
【问题描述】:
我有这个代码:
DatabaseHandler db = new DatabaseHandler(this);
System.out.println("Start - " + System.currentTimeMillis());
for (int i = 1; i < db.getChampsCount() + 1; i++) {
String name = db.getChampInfo(i, "name");
String title = db.getChampInfo(i, "title");
String thumb = db.getChampInfo(i, "thumb");
System.out.println("End - " + System.currentTimeMillis());
[...]
}
还有这个
String getChampInfo(int id, String col) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT " + col + " FROM champions WHERE id = " + id, new String[] {});
if (cursor != null)
cursor.moveToFirst();
db.close();
return cursor.getString(0);
}
DatabaseHelper 类的一部分
它工作正常,但问题是执行时间太长(在我的安卓手机上为 2089 毫秒)。这些字符串是 UI 的一部分,所以我认为我不能把它放在另一个线程中。我该怎么做才能让这段代码运行得更快?
编辑:正好有 110 行
【问题讨论】:
-
如果使用单个 SQL 语句,您可能会获得大约 3 倍的速度
-
冠军表中有多少行。我假设 id 是主键?想不通为什么这么慢,主键应该被索引..嗯..
-
+1 为亚历克斯·胡安·吉特迈尔。结合你的 SQL。不需要单独查询每一列。
-
发布你的表结构。
标签: android sql performance sqlite