Выбор ответа Middle Индексы обновлено
Поиск по подстроке
Вопрос
Какой индекс ускорит WHERE title ILIKE '%ноут%'?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: GIN с gintrgmops из расширения pgtrgm. B-tree ищет по началу ключа и помогает только для префикса (LIKE 'ноут%'), даже с textpatternops.
Варианты ответа
- Обычный B-tree по
titleсtext_pattern_ops - GIN с
gin_trgm_opsиз расширения pg_trgmправильный ответ - B-tree по выражению
lower(title) - Hash-индекс по
titleдля поиска подстроки
Разбор
B-tree ищет по началу ключа и помогает только для префикса (LIKE 'ноут%'), даже с text_pattern_ops. Шаблон с % в начале и регистронезависимый поиск ему не по силам, и lower(title) этого не меняет. Hash поддерживает только равенство. Триграммный GIN разбивает строку на тройки символов и умеет LIKE и ILIKE по подстроке.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.