0

我们在 iPhone 应用程序上使用 sqlite。在搜索框中,我们想要查询数据库并返回与用户输入的内容相关的任何值。目前,我们正在搜索几个不同的列,例如

Gene
Disease
Medicine
Keywords

我们从当搜索文本改变时调用这个方法(带有一些伪代码)的蛮力方法开始:

// Basically we do this for our 4 columns we are searching on
    NSString *query2 = [NSString stringWithFormat:@"select * from MedicineList where MedicineList.Keywords like \"%%%@%%\"",searchtext];

    FMResultSet * rs2 = [ _patientAnnotatedDatabase executeQuery:query2];
    while ([rs2 next])
    {
        // if you find anything, put it in a dictionary
    }
    [rs2 close];

这是一种搜索列并返回结果字典的大方法。当我们的数据集很小时,它就可以工作。当然,现在我们的数据集更大了,它的性能并不是那么好。除了在我们正在搜索的列上创建索引之外,我们还可以做其他性能方面的事情吗?提前致谢。

4

1 回答 1

1

LIKE像这样的模式%word%无法使用普通索引进行优化。

搜索单词是 SQLite 的全文搜索扩展的设计目的。

于 2013-02-07T16:58:59.253 回答