Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
IT и технологии · 29 мая 2026 г.
Мини-гайд: Как ускорить SELECT’ы в PostgreSQL с помощью покрытия индекса (covering index)
Мини-гайд: Как ускорить SELECT’ы в PostgreSQL с помощью покрытия индекса (covering index) Иногда индекс есть, а запрос всё равно тормозит. Почему? 👉 Потому что обычный индекс помогает найти строку, но потом БД всё равно лезет в таблицу, чтобы достать нужные поля. Это называется heap access — и это дорого. 📌 Решение — покрывающий индекс. Это индекс, который содержит все нужные поля прямо в себе. PostgreSQL с версии 11 умеет делать это через INCLUDE. 🔧 Пример: -- Запрос SELECT name, email FROM users WHERE status = 'active'; -- Обычный индекс CREATE INDEX idx_users_status ON users(status); -- Покрывающий индекс CREATE INDEX idx_users_status_cover ON users(status) INCLUDE (name, email); ✅ Теперь PostgreSQL может ответить на запрос только по индексу, не трогая таблицу → быстрее. 📈 Особенно заметный профит: – На больших таблицах – В OLTP-нагрузках (много коротких запросов) – Когда важна задержка ответа (например, API) ⚠️ Но не стоит включать весь ряд в индекс — это увеличит размер и замедлит обновления. Вывод: Покрывающие индексы — мощный способ ускорить SELECT без изменения запроса. Используй их там, где читаешь часто, а пишешь редко. Сохрани, пригодится при оптимизации ⚙️ #db 👉 @database_info