普通表与虚拟表SQLite DB

时间:2012-12-26 14:49:54

标签: android sqlite fts3

当需要搜索时,Android开发人员手册似乎更喜欢SQLite DB中的FTS3。我阅读了FTS3描述,它似乎创建了一个虚拟表而不是永久表。 SQLite中的虚拟表(FTS3)和普通表有什么区别?虚拟表是永久性的,即使在我退出应用程序后仍保留在数据库中吗?谢谢。

2 个答案:

答案 0 :(得分:6)

虚拟表允许SQLite引擎使用(通常)非SQLite代码访问数据存储的内容。这允许开发人员向SQLite添加自定义功能。

对于FTS,它最初不是SQLite引擎的一部分。这是SQLite外部的代码,允许最终用户对数据进行全文搜索。

虚拟桌是永久性的吗? 这取决于实施。对于FTS,数据是永久性的。但是,您可以创建一个使用RAM进行存储的实现 - 当应用程序终止时,这显然会消失。

有关虚拟桌的更多信息:http://www.sqlite.org/vtab.html

答案 1 :(得分:0)

我认为更准确地说,创建搜索界面的API指南指出FTS3比LIKE,更快地进行全文搜索,具体取决于搜索的特征。例如,使用LIKE的常规SQLite查询允许使用通配符,而使用MATCH的FTS3查询则不允许。如果要搜索令牌,可能需要使用FTS3。如果你做的是不精确的比赛,你肯定要跟LIKE一起去。