如何快速搜索android sqlite数据库?

时间:2016-11-02 08:49:02

标签: android android-sqlite android-database

我尝试使用以下代码在sqlite数据库中搜索:

    Cursor cusror;
     cursor=db.rawQuery("SELECT * FROM "+ Contactsnew.TABLE02 + " WHERE " 
            + Contactsnew.userid + " = " + Contactsnew.userId + " AND " +   
      Contactsnew.TITLE +
             " LIKE  '"+search.getText()+"%'");

它的成功运作,但在庞大的数据库中,它的工作进展缓慢。我搜索了最后几天找到第三个库来使用我自己的数据库(从资产复制到sqlite数据库)。

我发现this article i中的前五个库跟随每个库,但我发现每个数据库只能使用自己创建的数据库而不是现有数据库(已经从资产中复制)。

使用这些库中的任何帮助并将其引用到我自己的数据库或任何其他库来帮助我。

谢谢

2 个答案:

答案 0 :(得分:1)

您必须确保现有数据库与您添加的新数据库具有相同的数据格式。 可能是这里最简单的解决方案 - 编写一些'迁移实用程序',它将提取现有数据并将其保存到新数据库中。 要加速查询,请将数据的不同方面存储到单独的表中(而不是单个表中的所有内容),或者,如果您的数据有很多依赖项,请尝试使用不使用表的noSql数据库(Realm)。

答案 1 :(得分:1)

我建议创建预准备语句并重新使用它们。有一个很好的answer on Stack Overflow如何做到这一点。如果不是所有列都需要,请考虑减少查询返回的列。此外,请考虑为相关列创建索引。 test是表名,id是列名:

CREATE INDEX idx01 ON test(id);

作为最后的手段,在迭代光标时尝试完全删除LIKE和正则表达式测试可能是值得的。