0

我正在使用 sql 查询进行一些调试,执行以下操作以创建虚拟表:

sqlite> CREATE VIRTUAL TABLE email_fts USING fts3(subject, body, "to", "from");

& 检查架构,其中显示了对创建的虚拟表的附加 3 个表引用。

sqlite> .schema

CREATE VIRTUAL TABLE email_fts USING fts3(subject, body, "to", "from");

CREATE TABLE 'email_fts_content'(docid INTEGER PRIMARY KEY, 'c0subject', 'c1body', 'c2to', 'c3from');

CREATE TABLE 'email_fts_segments'(blockid INTEGER PRIMARY KEY, block BLOB);

CREATE TABLE 'email_fts_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx));

任何人请解释:

  • fit_content/segments/segdir 的用途是什么,
  • 谁使用这些。
  • 使用目的肯定与搜索有关,但它们如何相互关联。
4

1 回答 1

0

这记录在文档中:

对于数据库中的每个 FTS 虚拟表,都会创建三到五个真实(非虚拟)表来存储基础数据。这些真实的表被称为“影子表”。
[…]

于 2017-07-30T11:07:48.727 回答