Я вижу медленные запросы (~ 20 секунд), когда я выполняю нечеткий текстовый поиск по относительно небольшому набору записей (8 КБ) в PostgreSQL.Я установил индексы триграмм GIN и GIST и подтвердил через ANALYZE, что они используются.Производительность, по-видимому, определяется небольшим количеством записей с очень длинными текстовыми полями.В то время как большинство записей менее 2 000 символов, около 200 более 10 000, а немногим более 20 000.Усечение этих длинных строк до 10 тыс. Символов сокращает время запроса до 8 с.
Я пробовал PostgreSQL 10 и 11, индексы GIN и GIST, без существенного изменения производительности.
Я пытался разбить текстовое содержимое на большее количество записей, с каждымзапись намного меньше.Поиск этого же текста, распределенного по множеству других записей, приводит к получению запросов в секунду.
Запрос совершенно ничем не примечателен:
select title,
'orthopedic surgeon' <<-> content as sml
from answers
where 'orthopedic surgeon' <% content
order by sml desc
При таком небольшом количестве записей я ожидаю, что индекс триграмм даст почти мгновенные результаты, даже если в моих текстовых полях более 30 тыс. Символов,Я не ожидаю более быстрых запросов, разбивая контент на большее количество записей.Нормально ли это исполнение?