Составной индекс (company_id, created_at) не помогает фильтру только по дате
На таблице заявок есть индекс:
CREATE INDEX applications_company_created_idx ON applications (company_id, created_at);
Отчёт по всем компаниям выполняет запрос:
SELECT id FROM applications WHERE created_at >= '2026-01-01';
Запрос идёт по всей таблице. Почему существующий индекс не спасает?
- Составной индекс применим только при равенстве по обеим колонкам, диапазон он не поддерживает
- Порядок колонок в составном индексе не важен, причина — в типе данных временной метки
- Нужно переставить условия в WHERE: база выбирает индекс по порядку условий в запросе
- Индекс работает от левого префикса: без условия по company_id он для этого фильтра бесполезен
