У меня есть база данных sqlite, в которой на данный момент есть несколько таблиц, в самой большой из которых более 10000 строк.Эта таблица имеет четыре столбца: идентификатор, термин, определение, категория.Я использовал модуль FTS3 для ускорения поиска, который очень помог.Однако теперь, когда я пытаюсь получить «следующую» или «предыдущую» строку из таблицы, это занимает больше времени, чем было до того, как я начал использовать FTS3.
Вот как я создаю виртуальную таблицу:
CREATE VIRTUAL TABLE profanity USING fts3(_id integer primary key,name text,definition text,category text);
Вот как я выбираю следующие / предыдущие строки:
SELECT * FROM dictionary WHERE _id < "+id + " ORDER BY _id DESC LIMIT 1
SELECT * FROM dictionary WHERE _id > "+id + " ORDER BY _id LIMIT 1
Когда я запускаю эти операторы в виртуальнойтаблица:
- СЛЕДУЮЩИЙ термин выбирается в течение ~ 300 мс ,
- ПРЕДЫДУЩИЙ термин выбирается в течение ~ 200 мс
Когда я делаю это с обычной таблицей (созданной без FTS3):
- СЛЕДУЮЩИЙ термин выбирается в течение ~ 3 мс ,
- ПРЕДЫДУЩИЙ терминизвлекать в течение ~ 2 мс
Почему такая большая разница?Можно ли как-нибудь улучшить эту скорость?
РЕДАКТИРОВАНИЕ: Я до сих пор не могу заставить его работать!