@Vopless

Как можно ускорить запрос или какой индекс использовать?

Я делаю поиск имен в строках так:
SELECT * FROM data WHERE name LIKE "%иванов%" and name LIKE "%иван%" and name LIKE "%иванович%"


Всё работает так как мне нужно. но скорость поиска всегда выше 3 секунд и при большом кол-ве элементов в запросе увеличивается.

Я пробовал использовать nocase, binary, rtrim индексы, но скорость оставалась такой же или была больше.

Если убрать % в начале любого слова, то к примеру индекс nocase успешно работает, но в таком случае рушится логика моего изначального запроса.

Что можно предпринять в данном счучае?
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Ну во первых смысл неправильный. У тебя - взаимоисключающие предикаты. Поэтому надо использовать OR.
Уже написали выше про это.

Попробуй так. Должно быть быстрее.

SELECT * FROM data WHERE name LIKE "Иван%";

И построй индекс по name. А лидирующий метасимвол % лучше не ставить т.к. это отключает
возможность использования классическийх B-Tree индексов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы