我们的数据库中有几个表,我们在iOS上使用LIKE进行搜索。数据增长得越大,速度就越慢。我直接接触了FTS3/FTS4,并通读了一些文档。我对如何开始有点不确定。(如果我的陈述是错误的,或者我误解了文档中的某些内容,请纠正我)。听起来,虚拟表只是一个没有存储在磁盘上的表。因此,如果我们有4列,我们目前使用LIKE进行搜索,我是否要创建4个虚拟表,将原始表中的条目插入到其中一个新虚拟表的行中,然后在通常搜索该列的情况下,使用匹配语法在新虚拟表中搜索,如果该部分到目前为止是正确的,我就有点不知道下一步该做什么了。因为我需要返回到我的原始表中查找,以获得与该行关联的其余列。
或者,人们会将整个数据库的副本创建到一个虚拟表中,然后以这种方式获取信息吗?谢谢!
发布于 2013-02-09 16:36:45
虚拟表并不直接存储在磁盘上,但它们通常使用几个内部的“普通”表来实际存储数据,并且只是更改数据的访问方式。(参见Shadow Tables)
您可以将多个文本列放入一个FTS表中,并使用search either one or all of them
通常,令牌或令牌前缀查询与指定为匹配运算符左侧的FTS表列进行匹配。或者,如果指定了与FTS表本身同名的特殊列,则对所有列执行此操作。
FTS表are not able to do 'normal' queries efficiently,所以你可能仍然需要你的原始表。FTS表的docid列通常是原始表的主键。
如果原始表还包含所有文本,则可以使用external content FTS table来节省一些空间。
https://stackoverflow.com/questions/14779882
复制相似问题