SQLite3 虚拟表的生命周期

9

请问sqlite3中创建的虚拟表的生命周期是多久?我有一个带搜索功能的安卓应用程序,想要使用sqlite的快速文本搜索功能。

我不知道这些表在系统中停留的时间长度,或者是否需要每次访问应用程序时都创建表。

有什么帮助吗?

2个回答

7

SQLite的FTS模块为每个虚拟表创建了几个'内部'表。 这些表在数据库模式中明显可见,因此FTS虚拟表以及其基础数据完全包含在数据库文件中。

其他类型的虚拟表可能会有所不同;例如,VirtualShape扩展允许将ESRI shapefiles(.shp)文件读取为表;这些文件(自然)与SQLite数据库文件分开存储。

无论如何,任何虚拟表的定义本身都像普通表一样存储在数据库文件中,因此回答您的问题:

不需要每次打开数据库都重新创建它们。


5
根据SQLite3文件格式规范,虚拟表定义与其他表一样存储在模式表中。任何虚拟表的索引也都存储在DB文件中。
我理解这意味着虚拟表存储在DB文件中,因此是持久的。每次打开DB连接时都不必重新创建它 - 这样做没有多大意义。
使用sqlite3 CLI工具和FTS3表进行简单测试可以证实这一点 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接