Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
IT и технологии · 25 февраля 2026 г.
Как понять, что вашему проекту нужен полнотекстовый поиск, а не ILIKE — 25 февраля 2026 г. в 08:30:02.088
Как понять, что вашему проекту нужен полнотекстовый поиск, а не ILIKE Часто разработчики в PostgreSQL начинают с простого: SELECT * FROM articles WHERE title ILIKE '%postgres%'; Но уже при 10k+ строк и регулярных запросах начинаются тормоза. Значит, пора на следующий уровень — полнотекстовый поиск. 🔍 Когда ILIKE — плохо: – Сложные запросы с несколькими ILIKE – Не масштабируется: без индексов → full scan – Нет нормализации слов: postgres, PostgreSQL, постгрес — всё разное 💡 Решение: to_tsvector + to_tsquery SELECT * FROM articles WHERE to_tsvector('russian', title) @@ to_tsquery('russian', 'postgres'); 📈 Плюсы: – Работают GIN-индексы – Поддержка морфологии и синонимов – Быстрее и точнее на больших объемах ⚠️ Подводные камни: – Нужна настройка языкового словаря – tsquery не такая гибкая, как regex – Требуется обновление индекса при INSERT/UPDATE 🛠 Как включить GIN-индекс: CREATE INDEX idx_articles_title_search ON articles USING GIN (to_tsvector('russian', title)); 👉 Если пользователи ищут по тексту — не тормозите ILIKE, внедряйте полнотекст! Сохрани, чтобы потом не мучиться с explain-ами 😉 #db 👉 @database_info

