Индексы в PostgreSQL для веб-проектов: B-tree, составные и лишние индексы
Когда достаточно одного B-tree, зачем порядок полей в составном индексе и как `EXPLAIN ANALYZE` спасает от догадок.
Индекс ускоряет выборку и JOIN по предикатам, но замедляет INSERT/UPDATE и занимает место на диске.
Составной индекс `(shop_id, created_at)` подходит для запросов с равенством по `shop_id` и диапазоном по дате; обратный порядок может не использоваться планировщиком.
- Indexes — PostgreSQL Documentation — Типы индексов и основы.
- EXPLAIN — PostgreSQL Documentation — План запроса и ANALYZE.
Практика
Снимайте планы на staging с реалистичным объёмом данных, а не на пустых таблицах.
Удаляйте неиспользуемые индексы — их видно в статистике `pg_stat_user_indexes`.