Назад к вопросам
Senior
7
Какой тип индекса использовать для поиска по середине или концу строки (LIKE '%text%')?
Компании, где спрашивали
солюшин
Ответ от нейросети
sobes.tech AI
Для поиска по середине или концу строки с шаблоном LIKE '%text%' обычные B-Tree индексы неэффективны, так как они не могут использоваться при ведущем символе '%'. В таких случаях применяют:
- Полнотекстовые индексы (Full-Text Indexes) — позволяют эффективно искать слова или фразы внутри текста.
- Индексы с использованием триграмм или n-грамм — разбивают строки на подстроки фиксированной длины и индексируют их, что ускоряет поиск подстрок.
- Индексы с помощью расширений, например, pg_trgm в PostgreSQL — поддерживают индексирование для LIKE '%text%'.
Пример создания триграммного индекса в PostgreSQL:
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX idx_trgm ON table_name USING gin (column_name gin_trgm_ops);
Это позволит эффективно выполнять запросы с LIKE '%text%'.