sqlite3虚拟表的生命周期

时间:2011-02-02 11:28:12

标签: sqlite

有人可以告诉我在sqlite3中创建的虚拟表的生命周期。我有一个带有搜索功能的Android应用程序,我想使用sqlite的快速文本搜索功能。

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

任何帮助?

2 个答案:

答案 0 :(得分:5)

SQLite FTS module为您定义的每个虚拟表创建多个“内部”表。这些表在数据库模式中清晰可见,因此FTS虚拟表及其基础数据完全包含在数据库文件中。

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

在任何情况下,任何虚拟表本身的定义都存储在数据库文件中,就像普通表一样;所以你的问题的答案是:

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

答案 1 :(得分:4)

根据SQLite3 file format specification,虚拟表定义与任何其他表一样存储在模式表中。虚拟表的任何索引也存储在DB文件中。

我认为这意味着虚拟表存储在DB文件中,因此是持久的。每次打开数据库连接时都不必重新创建它 - 无论如何,这样做没有多大意义。

使用sqlite3 CLI工具和FTS3表进行的简单测试证实了这一点: - )