我是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;
}
Run Code Online (Sandbox Code Playgroud)SQL语句由硬编码提供String
.
Steps: 155 , Sorts: 0, AutoIdx: 1077
我没有使用主键,因此我也没有将任何内容重命名为"_id".
rawQuery的执行速度相对较快,执行时间约为2毫秒.
那我在这里错过了什么?我的手机800 MHz,2 GB RAM,MicroSD实际上可能慢了约120倍吗?
除了仍然比在 PC 上慢一点之外,问题似乎在于未索引字段的处理。
虽然我原来的帖子中的配置慢了大约 120 倍,但我尝试使用完整索引的数据库进行相同的操作(这意味着在需要的地方都可以使用索引和主键),并且现在在 PC 上需要 9 毫秒的查询现在“仅”8 毫秒慢一些:执行时间大约 75 毫秒。
这当然仍然是一个非常令人失望的结果,因为我不想每次都使用索引,即使在非常小的表上也是如此。
归档时间: |
|
查看次数: |
1919 次 |
最近记录: |