我有一个包含一个表的数据库,其中有大约350.000行。当我尝试查询它时,我的Nexus4速度超慢。 cursor.moveToFirst()
方法调用大约需要500毫秒。如果我使用sqlite3在终端上的同一个数据库上运行完全相同的查询,则大约需要10毫秒。所以我想我的Cursor
没有使用我的索引...
String table = "table";
String[] columns = {
"col1",
"col2"
};
String predicate = "col1 like '?' and col2 = ?";
String[] values = {
value1+"%%",
value2
};
String orderBy = "col3 ASC";
String limit = "5";
Cursor c = this.mDatabase.query(table, columns, predicate, values, null, null, orderBy, limit);
if (c != null) {
long start = System.currentTimeMillis();
c.moveToFirst();
long duration = System.currentTimeMillis() - start;
// The duration here is super slow
....
}
数据库的索引位于col1
和col2
。就像我说的......当在命令行执行sql时,它的速度非常快......在手机上大约10ms vs 500 ...
关于如何提高查询速度的任何想法?似乎索引没有被使用?!?
由于