Индекс зависит от поиска: для точного названия обычно подходит B-tree, для подстроки — триграммный индекс, для поиска по смысловым словам — полнотекстовый. Одного универсального индекса нет.
Что делать, если мы хотим искать по названию книги — какой индекс использовать?
Индекс зависит от поиска: для точного названия обычно подходит B-tree, для подстроки — триграммный индекс, для поиска по смысловым словам — полнотекстовый. Одного универсального индекса нет.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Индекс зависит от поиска: для точного названия обычно подходит B-tree, для подстроки — триграммный индекс, для поиска по смысловым словам — полнотекстовый. Одного универсального индекса нет.
В PostgreSQL pg_trgm предоставляет GIN/GiST-индексы для LIKE/ILIKE и похожести строк. Например, название, содержащее подстроку, ищут через ILIKE '%text%'. Очень короткие шаблоны могут плохо использовать триграммы. Для префикса учитывайте collation и операторный класс B-tree. Проверяйте план и стоимость обновления индекса на характерных запросах.
Источник: www.postgresql.org.