Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
IT и технологии · 14 июля 2026 г.
Почему индекс в PostgreSQL не всегда спасает — 14 июля 2026 г. в 06:00:21.989
Почему индекс в PostgreSQL не всегда спасает Индексы - мощный инструмент, но не панацея. Иногда запрос с индексом работает медленнее, чем без него. Почему? 1️⃣ Маленькая выборка - да, полное сканирование - нет Если таблица маленькая (до нескольких тысяч строк), PostgreSQL может решить, что быстрее прочитать всё целиком, чем прыгать по индексу. EXPLAIN ANALYZE SELECT * FROM users WHERE status = 'active'; План покажет Seq Scan, и это не баг. 2️⃣ Индекс не помогает с функциями в WHERE Запрос вида: SELECT * FROM orders WHERE DATE(created_at) = '2025-08-12'; не использует индекс по created_at. Решение — переписать условие: WHERE created_at >= '2025-08-12' AND created_at < '2025-08-13' 3️⃣ Селективность Если по условию отбирается больше ~5–10% строк, индекс становится невыгодным — чтение с диска и так почти сплошное. 4️⃣ Статистика устарела PostgreSQL выбирает план по статистике. Если она старая - план может быть неэффективным. ANALYZE table_name; - и жизнь наладится. 💡 Вывод: Индекс - не магическая кнопка «ускорить». Следи за планами запросов (EXPLAIN), обновляй статистику и оптимизируй условия. Сохрани, чтобы не наступить на этот грабельный индекс 🚀 #db 👉 @database_info

