sphinx: фильтрация по идентификатору не влияет на скорость запроса с использованием кворума - PullRequest
0 голосов
/ 03 марта 2019

У меня есть rt-индекс (записи), содержащий 15 тысяч записей.Я выполняю следующий запрос по этому индексу:

select id from posts where match('"word1 word2 word3 word4 word5"/3');

После этого я запустил тот же запрос, но для небольшого числа записей.Вот так

select id from posts where id > 14900 and match('"word1 word2 word3 word4 word5"/3');

Согласно моей логике, этот запрос должен искать эти слова только в 100 записях, и время выполнения запроса должно быть меньше.Но это не так.Время выполнения запроса не изменилось.Затем я удалил первые 14 900 записей из индекса и снова выполнил второй запрос.На этот раз время выполнения запроса значительно уменьшилось.

Означает ли это, что запрос quroum сначала ищет все совпадения во всем индексе, а затем фильтрует результат по id?Если так, как я могу увеличить скорость запроса для второго случая?

1 Ответ

0 голосов
/ 04 марта 2019

Полнотекстовое совпадение выполняется первым.Фильтры атрибутов применяются к результату полнотекстового соответствия.Однако существует раннее тестирование отклонения для значений атрибутов - если они выходят за пределы диапазона, выполнение запроса останавливается (например, если вы делаете gid<10, но в индексе нет значений для gid в этом диапазоне, запрос будетбыстро закончить с нулевым результатом).

...