Что такое использование автоматически сгенерированных таблиц виртуальных таблиц
Я делал некоторые отладки с 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 в базе данных создается три-пять реальных (не виртуальных) таблиц для хранения базовых данных. Эти реальные таблицы называются "теневыми таблицами".
[...]