Как индексы взаимодействуют с условиями WHERE ... LIKE в SQL?

Для LIKE 'prefix%' индекс иногда позволяет ограничить диапазон поиска, а для LIKE '%part%' обычный B-tree обычно не помогает. Результат зависит от СУБД, collation и operator class.

Короткий ответ

Что ответить на собеседовании

Для LIKE 'prefix%' индекс иногда позволяет ограничить диапазон поиска, а для LIKE '%part%' обычный B-tree обычно не помогает. Результат зависит от СУБД, collation и operator class.

Подробный разбор

Ответ с пояснениями

Для LIKE 'prefix%' индекс иногда позволяет ограничить диапазон поиска, а для LIKE '%part%' обычный B-tree обычно не помогает. Результат зависит от СУБД, collation и operator class.

В PostgreSQL для префиксного поиска при некоторых локалях нужны специальные pattern operator classes; для поиска подстроки рассматривают pg_trgm с GIN/GiST. Это не означает, что любой LIKE автоматически использует индекс. Учитывайте параметризованный план, селективность, длину шаблона и регистр. % означает любую последовательность, _ — один символ; пользовательские шаблоны требуют корректного экранирования, если нужен буквальный поиск. Проверяйте EXPLAIN на характерных значениях и не заменяйте индексом анализ запроса.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее