我们的数据库中有几个表,我们在 iOS 上使用 LIKE 进行搜索。数据增长得越大,速度就越慢。我直接转向 FTS3/FTS4,并阅读了一些文档。我有点不确定如何开始。 (如果我的陈述不正确并且我误解了文档中的某些内容,请纠正我)。听起来虚拟表只是一个不存储在磁盘上的表。因此,如果我们当前使用 LIKE 搜索 4 列,我是否创建 4 个虚拟表,将原始表中的条目插入到新虚拟表之一的行中,然后在我通常在该列上搜索的情况下,使用 MATCH 语法在新的虚拟表中搜索,如果到目前为止该部分是正确的,我有点陷入下一步该做什么。因为我需要查找原始表以获取与该行关联的其余列。
或者人们是否将整个数据库的副本创建到虚拟表中并以这种方式获取信息?谢谢!最佳答案
虚拟表不直接存储在磁盘上,但它们通常使用几个内部“普通”表来实际存储数据,并且只是更改数据的访问方式。 (参见Shadow Tables)
您可以将多个文本列放入一个 FTS 表中,并且 search either one or all of them :
Normally, a token or token prefix query is matched against the FTS table column specified as the left-hand side of the MATCH operator. Or, if the special column with the same name as the FTS table itself is specified, against all columns.
FTS 表 are not able to do 'normal' queries efficiently ,所以您可能仍然需要原来的表。 FTS 表的 docid
列通常是原始表的主键。
如果您的原始表格也包含所有文本,您可以使用 external content FTS table以节省一些空间。
关于ios - iOS 上的 FTS3 或 FTS4 入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14779882/