在另一列上具有全文索引和B树索引的SQLite

wtlkbnrh  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(164)

我有一张这样的table:

id | status | message
1  | 200    | Some long text
2  | 400    | Other text

有时需要根据id查找行,有时需要根据状态(包括范围查询)查找行,有时需要根据消息中包含的一些单词进行过滤。有时,我需要根据所有列上的混合条件进行筛选。
问题是,我有两个选择:

  • 使用虚表FTS5进行全文搜索
  • 使用ID和状态为索引的普通表

看来我不能两者兼得。我是不是遗漏了什么?在这种情况下我应该怎么做?

omhiaaxx

omhiaaxx1#

不过,你可以两者兼得。
将所需的索引添加到表中。然后创建一个外部内容FTS5表,将其用作后备存储。

CREATE TABLE my_table(id INTEGER PRIMARY KEY, status INTEGER, message TEXT);
CREATE INDEX my_table_status_idx ON my_table(status);
CREATE VIRTUAL TABLE my_table_fts USING fts5(message, content=my_table, content_rowid=id);

然后在从my_table插入或删除行时适当地更新FTS表。文档给出了自动执行此部分的示例触发器。

相关问题