ИндексыПродвинутый
Partial Index (частичный индекс)
Индекс с условием WHERE — индексирует только часть строк таблицы.
Синтаксис
CREATE INDEX idx_name ON table (column) WHERE condition;
Объяснение
Частичный индекс меньше по размеру и быстрее обновляется, чем полный. Идеален когда запросы всегда фильтруют по одному условию.
Пример: таблица orders с 10 млн строк, из которых активных (status='pending') всего 1000. Полный индекс на status — почти бесполезен. Частичный — только для pending — маленький и эффективный.
Пример
-- Только активные пользователи CREATE INDEX ON users (email) WHERE is_active = true; -- Незакрытые задачи CREATE INDEX ON tasks (assigned_to, due_date) WHERE status != 'done';
Связанные термины
Анекдоты по теме
Разработчик смотрит на EXPLAIN и видит: cost=0.00..99999.00 rows=1000000 — Это нормально? DBA: (смотрит на часы, потом на разработчика) — Нет.
Таблица на 10 строк: всё работает молниеносно. Таблица на 10 000 строк: всё ещё быстро. Таблица на 10 000 000 строк: добавь индексы. Таблица на 10 000 000 000 строк: пора поговорить о партиционировании.
— Что такое HOT update в PostgreSQL? — Heap Only Tuple. Если обновлённые колонки не входят в индексы — PostgreSQL обновляет строку без изменения индекса. — Это быстрее? — Значительно. Индекс не трогается.