当需要搜索时,Android 开发人员手册似乎更喜欢 SQLite DB 中的 FTS3。我阅读了 FTS3 描述,它似乎创建了一个虚拟表而不是永久表。SQLite 中的虚拟表(FTS3)和普通表有什么区别?即使在我退出应用程序后,虚拟表是否是永久的并保留在数据库中?谢谢你。
问问题
5461 次
2 回答
6
虚拟表允许 SQLite 引擎使用(通常)非 SQLite 代码访问数据存储的内容。这允许开发人员向 SQLite 添加自定义功能。
对于 FTS,它最初不是 SQLite 引擎的一部分。它是 SQLite 外部的代码,允许最终用户对数据进行全文搜索。
虚拟表是永久的吗?这取决于实施。对于 FTS,数据是永久性的。但是,您可以创建一个使用 RAM 进行存储的实现——这显然会在应用程序终止时消失。
更多关于虚拟表:http ://www.sqlite.org/vtab.html
于 2012-12-26T15:38:32.823 回答
0
我认为更准确的说法是创建搜索界面的 API 指南指出 FTS3 进行全文搜索的速度比 LIKE 快得多,具体取决于搜索的特性。例如,使用 LIKE 的常规 SQLite 查询允许使用通配符,而使用 MATCH 的 FTS3 查询则不允许。如果您想搜索令牌,您可能需要使用 FTS3。如果您要进行不精确的匹配,则绝对必须使用 LIKE。
于 2012-12-26T21:34:45.780 回答