2

我们的数据库中有几个表,我们在 iOS 上使用 LIKE 进行搜索。数据增长得越大,速度就越慢。我被定向到 FTS3/FTS4,并阅读了一些文档。我有点不确定如何开始。(如果我的陈述不正确并且我误解了文档中的某些内容,请纠正我)。听起来虚拟表只是一个不存储在磁盘上的表。因此,如果我们目前使用 LIKE 搜索 4 列,我是否创建 4 个虚拟表,将原始表中的条目插入到我们的一个新虚拟表的行中,然后在我通常搜索该列的情况下,使用 MATCH 语法在新的虚拟表中搜索,如果该部分到目前为止是正确的,我有点不知道下一步该做什么。因为我'

还是人们将整个数据库的副本创建到虚拟表中,然后通过这种方式获取信息?谢谢!

4

1 回答 1

2

虚拟表不直接存储在磁盘上,但它们通常使用几个内部“普通”表来实际存储数据,并且只是更改数据的访问方式。(见影子表

您可以将多个文本列放入一个 FTS 表中,然后搜索其中一个或全部

通常,令牌或令牌前缀查询与指定为 MATCH 运算符左侧的 FTS 表列匹配。或者,如果指定了与 FTS 表本身同名的特殊列,则针对所有列。

FTS 表无法有效地执行“正常”查询,因此您可能仍需要原始表。FTS 表的docid列通常是原始表的主键。

如果您的原始表格还包含所有文本,您可以使用外部内容 FTS 表格来节省一些空间。

于 2013-02-09T08:36:44.780 回答