普通表vs虚拟表SQLite数据库



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

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

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

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

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

我认为更准确的说法是,创建搜索界面的API指南指出,FTS3的全文搜索比LIKE快得多,取决于搜索的特征。例如,使用LIKE的常规SQLite查询允许通配符,而使用MATCH的FTS3查询则不允许。如果您想搜索令牌,您可能想使用FTS3。如果你做的是不精确的匹配,你一定要用LIKE。

最新更新