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

Я делаю поиск имен в строках так:

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

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

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

Что можно предпринять в данном счучае?

Дополнительно:

Запись, соответствующая name LIKE "%иванович%", также оответствует двум другим условиям. Посему их можно удалить, что ускорит запрос почти втрое.

Что можно предпринять в данном счучае?

Используемые условия - non-SARGable. Посему только менять технологию поиска.
Скорее всего надо смотреть в сторону использования суффиксных деревьев. Или, если подлежащая поиску группа должна составлять целый токен, а не фрагмент - то поможет словаризация токенов.

Ответы:

Ну во первых смысл неправильный. У тебя - взаимоисключающие предикаты. Поэтому надо использовать OR.
Уже написали выше про это.

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

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

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

 

Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

 

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

    Для ускорения запроса в базе данных и повышения производительности при работе с большим объемом данных, можно воспользоваться индексами. Индексы позволяют быстро находить нужные записи в таблице, уменьшая время выполнения запросов.

    Для оптимизации запросов и увеличения скорости выполнения можно использовать различные типы индексов, такие как:
    1. Primary Key Index - индекс, который уникально идентифицирует каждую запись в таблице. Он используется для быстрого поиска конкретной записи.
    2. Unique Index - индекс, который гарантирует уникальность значений в столбце или комбинации столбцов.
    3. Composite Index - индекс, созданный на нескольких столбцах. Он позволяет ускорить запросы, которые используют условия на эти столбцы.
    4. Indexes on Foreign Keys - индексы на внешние ключи ускоряют соединения таблиц.

    Пример создания индекса в MySQL на столбце name в таблице users:

    Необходимо также помнить, что создание слишком большого количества индексов может привести к увеличению размера базы данных и замедлению операций записи данных. Поэтому важно анализировать запросы и выбирать наиболее оптимальные индексы для конкретной ситуации.

    Также стоит регулярно анализировать выполнение запросов с помощью инструментов для профилирования базы данных, чтобы выявлять узкие места и оптимизировать их.

Оставить комментарий