我正在开发一个Android应用程序,它使用Sqlite DB来存储和检索数据。该应用程序具有存储和检索文本数据的功能。由于以下好处,我决定采用VIRTUAL表实现
一个。更快执行
湾全文搜索
因为我的应用程序应该可以扩展以保存大量文本数据,并且应该能够快速搜索特定文本。在开始之前,我有几个问题。
提前致谢
答案 0 :(得分:0)
FTS表实际上不是一个表;把它想象成一个指数。
为避免将相同数据存储两次,请使用external content table。
FTS表将所有数据存储为文本,并且不允许除内置全文索引之外的任何其他索引。此外,documentation说:
可以使用两种不同形式的SELECT语句有效查询FTS表:
- 按rowid查询。如果SELECT语句的WHERE子句包含“rowid =?”形式的子子句,其中?是一个SQL表达式,FTS能够使用等效的SQLite INTEGER PRIMARY KEY索引直接检索请求的行。
- 全文查询。如果SELECT语句的WHERE子句包含“MATCH?”形式的子句,FTS可以使用内置的全文索引将搜索限制为与指定为MATCH子句的右侧操作数的全文查询字符串匹配的文档。
如果这两种查询策略都不能使用,那么FTS表上的所有查询都是使用整个表的线性扫描来实现的。
因此,您永远不应该尝试将非文本数据存储在FTS表中。