Для LIKE 'prefix%' индекс иногда позволяет ограничить диапазон поиска, а для LIKE '%part%' обычный B-tree обычно не помогает. Результат зависит от СУБД, collation и operator class.
Как индексы взаимодействуют с условиями WHERE ... LIKE в SQL?
Для 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 на характерных значениях и не заменяйте индексом анализ запроса.