Используйте filtered indexes (условные индексы) - они ускоряют выборки на больших таблицах, но мало кто о них знает.
Пример для таблицы заказов, где статус "active" запрашивается чаще всего:
CREATE INDEX idx_orders_active
ON orders(status)
WHERE status = 'active';
Плюсы:
- индекс меньше → быстрее в памяти,
- оптимизатор выбирает его при типичных запросах,
- запросы по активным записям работают значительно быстрее.
Мало кто использует условные индексы, а зря. Они умеют избавлять от лишних full scan почти бесплатно.