如何在android中改进SQLite查询?

时间:2012-06-21 16:19:22

标签: android sqlite

我对此感到很失落。我有一个应用程序正在读取具有439397条记录(~32MB)的静态SQLite数据库。

我在索引的列上查询数据库,但完成查询需要大约8-12秒。我正在使用的当前查询是执行database.query(tableName,columnHeaders,“some_id =”+ id)以获取id列表。

我试过做“WHERE some_id IN(id1,id2,id3)”的方法,但这花费了两倍的时间。我有一种感觉,我可能做错了。

查询是在AsyncTask中完成的,所以我对于我可以做些什么来改善性能感到迷茫。

  • 更新:

我通过更改应用程序的行为来解决问题。

2 个答案:

答案 0 :(得分:0)

您可以使用EXPLAIN QUERY PLAN确认您的索引确实正在使用。

您可以尝试使用COUNT(*)而不是真实列列表运行查询一次,以查看问题是否实际上是从闪存存储中读取行数据(如果有很多可能比赛和许多大栏目。)

您可以尝试运行查询以匹配单个ID(而不是N个),以开始尝试处理问题是否过多的比较。

但是,请记住,AsyncTask并不能以某种方式让事情神奇地变得更快。它使得主要应用程序线程无法运行。

答案 1 :(得分:0)

看起来你没有该字段的索引。请注意,如果您在真实查询中使用它们进行过滤/排序/分组,则索引可能需要涵盖多个字段(由于我还没有看到它,因此无法详细说明)。