2016-07-16 3 views
0

Я разрабатываю приложение для Android и использует Sqlite DB для хранения и извлечения данных. Приложение имеет функцию хранения и получения текстовых данных. Я решил пойти с VIRTUAL Table Implementation из-за следующих преимуществ:SQLite: нормальная таблица против виртуальной таблицы. Какой из них выбрать?

a. Более быстрое выполнение

b. Полнотекстовый поиск

потому что мое приложение должно быть масштабируемым, чтобы сэкономить большие объемы текстовых данных и должно быть в состоянии быстро найти конкретный текст. Перед запуском у меня мало вопросов.

  1. Должен ли я иметь только виртуальный стол? Безопасен ли он в долгосрочной перспективе? Я читал, что безопасно хранить обычную таблицу и виртуальную таблицу. Я не думаю, что это хорошая идея сохранить 2 копии одинаковых данных.
  2. Я планирую индексировать некоторые столбцы в виртуальной таблице, чтобы повысить эффективность поиска? Из-за этого возникают проблемы с производительностью и памятью?
  3. У меня есть 7 столбцов в таблице, и данные для поиска распределены по 4 столбцам. Хорошо ли работать с виртуальной таблицей или обычной таблицей, индексирующей эти 4 столбца?

Заранее спасибо

ответ

0

FTS таблица не является на самом деле таблица; подумайте об этом как о индексе.

Чтобы избежать сохранения тех же данных дважды, используйте external content table.

Таблицы FTS хранят все данные в виде текста и не допускают никакого другого индекса, кроме встроенного полнотекстового индекса. Кроме того, documentation говорит:

FTS таблицы могут быть запрошены эффективно использовать ЗЕЬЕСТ двух различных форм:

  • Запрос по ROWID. Если предложение WHERE инструкции SELECT содержит подпункт формы «rowid =?», Где? является выражением SQL, FTS может получить запрошенную строку напрямую, используя эквивалент индекса SQLite INTEGER PRIMARY KEY.
  • Полнотекстовый запрос. Если предложение WHERE инструкции SELECT содержит подпункт формы «MATCH?», FTS может использовать встроенный полнотекстовый индекс, чтобы ограничить поиск теми документами, которые соответствуют строке полнотекстового запроса указанный как правый операнд предложения MATCH.

Если ни одна из этих двух стратегий запроса не используется, все запросы в таблицах FTS реализуются с использованием линейного сканирования всей таблицы.

Поэтому вы никогда не должны пытаться хранить нетекстовые данные в таблице FTS.

Смежные вопросы