我是 Android 编程新手,但我很习惯使用 SQLite 数据库。
-
我的应用程序在 SD 卡上打开一个 SQLite3 数据库,并使用以下命令运行相对复杂的查询(5 个联接、1 个子查询、2 个 where 子句)SQLiteDatabase.rawQuery
public Cursor queryDataBase(String sql, String[] selectionArgs){
Cursor c = myDB.rawQuery(sql, selectionArgs);
return c;
}
SQL 语句由硬编码给出String
.
- 该查询返回 585 行 24 列。
- 我必须在存储空间和索引之间进行权衡,但在所有较大的表(目前大约有 40 000 个条目)上都使用索引,SQLite 显示查询:
Steps: 155 , Sorts: 0, AutoIdx: 1077
我没有使用主键,因此我也没有将任何内容重命名为“_id”。
rawQuery的执行速度比较快,执行时间约为2 ms.
- 访问这些数据需要花费太多时间,例如通过c.moveToFirst(),执行时间约为1700 ms!
rawQuery的执行速度比较快,执行时间在2ms左右。
访问这些数据需要花费太多时间,例如通过c.moveToFirst(),执行时间约为1700毫秒! (与 Cursor.getRowCount() 相同,或者显然是第一次访问实际结果集)。
这就是关键:rawQuery 实际上并不执行查询,而是延迟到第一次需要使用查询结果时才执行。
Source:
http://groups.google.com/group/android-developers/browse_thread/thread/c9277225f8dbc4d1/65de841f284f09e6?lnk=gst http://groups.google.com/group/android-developers/browse_thread/thread/c9277225f8dbc4d1/65de841f284f09e6?lnk=gst
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)