虚拟表自动生成的表有什么用



我正在使用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));

任何人请解释:

  • 什么是fits_content/段/赛格迪尔的用途,
  • 谁使用这些。
  • 使用目的肯定与搜索有关,但这些目的如何相互关联。

这在文档中有记录:

对于数据库中的每个 FTS 虚拟表,将创建三到五个真实(非虚拟(表来存储基础数据。这些真实的表称为"影子表"。
[...]

最新更新