У меня есть БД с несколькими полями
word_id — INTEGER PRIMARY_KEY
word — TEXT
...
..и ~150 тыс. строк.
Поскольку это словарь, я ищу слово с маской 'search_string%'
, используя LIKE. Раньше он работал нормально, на поиск совпадающих строк уходило 15 мс. В таблице есть индекс для поля 'word'
. Недавно я изменил таблицу (некоторые поля этой таблицы, которые выходят за рамки), и что-то случилось — выполнение запроса занимает 400 мс, я так понимаю, что сейчас он не использует индекс. Прямой запрос с = вместо like показывает результат 10 мс. У кого-нибудь есть идея, что здесь происходит?
CREATE INDEX idxname ON table(words) __SOMETHING_HERE__
, и я не могу вспомнить, что было в конце запроса. Может быть, мне это приснилось, потому что это маловероятно )) - person nikans   schedule 21.12.2011EXPLAIN QUERY PLAN
, чтобы увидеть, что происходит с вашим запросом. - person Evgeny Shurakov   schedule 21.12.2011EXPLAIN QUERY PLAN SELECT ...
и посмотрите, что происходит в консоли или как? - person nikans   schedule 21.12.2011(word, word_id)
, если это возможно в SQLite. - person onedaywhen   schedule 21.12.2011