我正在开发一个 Iphone 应用程序,用户可以在其中输入任何字符串到搜索栏中并按下搜索按钮。之后应该会出现一个结果列表。

在我的 SQLite 中,我有四列 a、b、c、d。假设它们具有以下值:

Dataset 1:
a: code1
b: report1
c: description1_1
d: description1_2

Dataset 2:
a: code2
b: report2
c: description2_1
d: description2_2

因此,如果用户输入值:“1_1”,那么第一个数据集将被选择,因为 clumn c。
如果用户输入值:“report”,则将选择第一个和第二个数据集。

因为我正在使用一个包含近 60.000 个数据集的数据库来搜索部分字符串,这真的会降低性能。

在所有 4 列上设置索引会使 SQLite 数据库的大小变得太大。
所以我根本没有使用索引。

我的选择语句如下所示:
NSString *sql = [NSString stringWithFormat:@"SELECT * FROM scode WHERE a LIKE '%@%@%@' OR c LIKE '%@%@%@' OR d LIKE '%@%@%@'", wildcard, searchBar.text, wildcard, wildcard, searchBar.text, wildcard, wildcard, searchBar.text, wildcard, wildcard, searchBar.text, wildcard];

有什么好的方法可以提高在所有列中搜索部分字符串的性能吗?

谢谢和亲切的问候,

丹尼尔

最佳答案

您正在使用 SQLite 本身不支持的全文搜索。我对 3rd 方支持没有任何经验,但 based on results 有几个选项。

10-07 23:00