2011-02-02 24 views
4

有人可以告訴我在sqlite3中創建的虛擬表的生命週期。我有一個搜索功能的android應用程序,我想使用sqlite的快速文本搜索功能。sqlite3虛擬表的生存期

我不知道這些表保留在系統中多久,或者每次訪問應用程序時都需要創建表。

任何幫助?

回答

5

SQLite的FTS module會爲您定義的每個虛擬表幾個「內部」表。這些表格在數據庫模式中清晰可見,因此FTS虛擬表格及其基礎數據完全包含在數據庫文件中。

這可能與其他類型的虛擬表不同;例如VirtualShape擴展允許將ESRI shapefile(.shp)文件讀爲表;這些(自然)與SQLite數據庫文件分開存儲。

無論如何,定義的任何虛擬表本身都存儲在數據庫文件中,就像普通表一樣;所以你的問題的答案是:

不,每次打開數據庫時都不需要重新創建它們。

4

根據SQLite3 file format specification,虛擬表定義像任何其他表一樣存儲在架構表中。虛擬表的任何索引也存儲在DB文件中。

我把所有這一切都意味着一個虛擬表存儲在數據庫文件,因此是持久的。無論如何,每次打開數據庫連接時都不應該重新創建它 - 無論如何,這不會有多大意義。

使用sqlite3的CLI工具和FTS3表一個簡單的測試證實了這一點:-)