SQLite FTS3 несовместимая производительность - PullRequest
2 голосов
/ 29 апреля 2010

Таблица с ~ 100 тыс. Строк.

SELECT word FROM entries WHERE word MATCH '"chicken *"';
17 results in 46ms
SELECT word FROM entries WHERE word MATCH '"chicken f*"';
2 results in 5793ms

Почему такая огромная капля?

1 Ответ

2 голосов
/ 21 июня 2010

Подстановочный знак в "курице *" можно эффективно игнорировать, так как он соответствует любому токену. Поиск - это простой поиск по обратному индексу.

Подстановочный знак в "chicken f *" должен найти все записи со словами, начинающимися с f, которые также содержат слово chicken. Понятно, что это сложнее и медленнее.

...