PostgreSQL partial index: индексировать только нужные строки
Частичный индекс PostgreSQL содержит только строки, удовлетворяющие WHERE. Он уменьшает размер индекса, если запросы часто выбирают небольшую активную часть большой таблицы. ??????? ????????? ?????? ?? ????????? ??????? ? ??????? ???? ?????????? ?? ????? ??????.
Рабочий пример
CREATE TEMP TABLE jobs(id int, status text, payload text);
CREATE INDEX jobs_queued_idx ON jobs(id) WHERE status = 'queued';
INSERT INTO jobs VALUES (1, 'queued', 'a'), (2, 'done', 'b');
SELECT id FROM jobs WHERE status = 'queued' ORDER BY id;Планировщик применит индекс, если условие запроса логически подразумевает предикат индекса. Сверьте план через EXPLAIN и реальные распределения данных.
Частый вопрос
Почему индекс не используется?
Проверьте план и убедитесь, что WHERE запроса включает условие индекса в распознаваемой форме. Также индекс может быть невыгоден для маленькой таблицы.