Sobes.tech
Назад к вопросам
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%'.