2012-01-04 122 views
-1

我必须搜索一个数据库,它是26024条目并计数。它过去速度很快,记录较少,但现在需要10秒钟,并且会减慢应用速度。我想知道如果我能得到有关如何加快这个过程或者我做错什么的建议。这是代码。Android:需要SQLite的建议,搜索缓慢

  while (cursor.moveToNext()) { 
       String word = cursor.getString(0); 
       if (word.equals(input)) { 
         String nikus = cursor.getString(1); 
           String def = cursor.getString(2); 
        ret.append(" " + nikus + "\n"+ def + "\n"); 
        g = null; 
      } 

编辑: 在我的数据库中,我有一个定义表,并在表中有3个领域之一是要比较的话,则sencond是完整的单词,而第三个是定义本身。希望能帮助你们多一点。

CREATE TABLE [definitions] (
    [word] TEXT, 
    [fullword] TEXT, 
    [definition] TEXT); 

编辑:这里是错误即时得到 01-04 00:47:54.678:E/CursorWindow(4722):需要长:MSIZE = 1048576,大小= 17,自由空间()= 13, numRows = 15340

+0

您可以将此方法放入另一个线程。 – Yahor10 2012-01-04 07:17:37

+0

你是什么意思? – Freddy 2012-01-04 07:19:30

+0

将上面描述的代码放入run(),然后调用start()。 – Yahor10 2012-01-04 07:23:36

回答

0

laalto上面的评论是正确的。您应该使用where子句来运行select,其中的where子句只会拉回单词等于输入的行(不要忘记区分大小写)。单词列上的索引将帮助查询更快。

+0

如果有更多thaqn一个词怎么办? – Freddy 2012-01-18 01:55:34

+0

@Freddy您可以使用IN子句。即WHERE [单词] IN(输入1,输入2,输入3等...) – 2012-01-25 21:09:40