Что такое использование автоматически сгенерированных таблиц виртуальных таблиц

Я делал некоторые отладки с 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 / сегментов / segdir,
  • кто их использует
  • Цель использования, безусловно, связана с поиском, но как они связаны друг с другом.

1 ответ

Это задокументировано в документации:

Для каждой виртуальной таблицы FTS в базе данных создается три-пять реальных (не виртуальных) таблиц для хранения базовых данных. Эти реальные таблицы называются "теневыми таблицами".
[...]

Другие вопросы по тегам