У меня есть сценарий, согласно которому я должен выполнить полнотекстовый поиск в базе данных на основе предоставленных параметров.Скажем, если first_name при условии, что я выполняю только запрос:
where(unaccent(first_name) ilike %{params[:first_name]}%
, если last_name предоставил только этот:
where(unaccent(last_name) ilike %{params[:last_name]}%
И если оба предоставлены, то я делаю:
where(unaccent(first_name) ilike %{params[:first_name]}% AND
where(unaccent(last_name) ilike %{params[:last_name]}%
Обратите внимание, что есть еще 3 поля, как это.
Я знаю, что могу добавить GIN
индексы длякаждое из этих полей и использовать его довольно быстро, но это определенно увеличит объем памяти и замедлит другие операции, так что я не очень большой поклонник этого.
Есть ли совет, как сделать это быстрее ивполне оптимизирован, но не замедляет работу других частей.