Частичные (partial) индексы индексируют только подмножество строк таблицы, определённое условием WHERE.
-- Индекс только для необработанных заказов
CREATE INDEX idx_pending ON orders(created_at)
WHERE status = 'pending';
-- Индекс только для ненулевых email
CREATE INDEX idx_email ON users(email)
WHERE email IS NOT NULL;
Когда полезны:
- Данные сильно скошены (10% активных, 90% архивных)
- Запросы всегда фильтруют по определённому условию
- Хочется уменьшить размер индекса и ускорить запись