Индекс ускоряет выборку и JOIN по предикатам, но замедляет INSERT/UPDATE и занимает место на диске.
Составной индекс (shop_id, created_at) подходит для запросов с равенством по shop_id и диапазоном по дате; обратный порядок может не использоваться планировщиком.
- [Indexes — PostgreSQL Documentation](https://www.postgresql.org/docs/current/indexes.html) — Типы индексов и основы.
- [EXPLAIN — PostgreSQL Documentation](https://www.postgresql.org/docs/current/sql-explain.html) — План запроса и ANALYZE.
---
## Практика
Снимайте планы на staging с реалистичным объёмом данных, а не на пустых таблицах.
Удаляйте неиспользуемые индексы — их видно в статистике pg_stat_user_indexes.
