Как создать частичный индекс?

Middle+
190 просмотров
AFK Offer AI

В PostgreSQL частичный индекс создаётся добавлением WHERE к CREATE INDEX:

-- Базовый синтаксис
CREATE INDEX idx_name ON table(column) WHERE condition;

-- Примеры: CREATE INDEX idx_active_subs ON subscriptions(user_id) WHERE status = 'active';

CREATE INDEX idx_unprocessed ON tasks(created_at) WHERE processed_at IS NULL;

CREATE UNIQUE INDEX idx_unique_email ON users(email) WHERE deleted_at IS NULL; -- unique только среди неудалённых

Последний пример особенно полезен — partial unique index для soft delete. Позволяет иметь несколько удалённых записей с одним email, но только одну активную.

Чтобы планировщик использовал partial index, WHERE в запросе должен включать условие индекса. Проверяй через EXPLAIN ANALYZE.

Следующий вопрос

Как реализовать Adapter?