ИндексыПродвинутый
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';Связанные термины
Анекдоты по теме
DBA смотрит на статистику: index_scans: 0 seq_scans: 50000 — Этот индекс никто не использует уже год. Разработчик: давайте удалим! DBA: подожди. Проверь, нет ли запросов с этой колонкой в WHERE. Разработчик: нет. DBA: удаляем. Мёртвые индексы только замедляют INSERT.
Начинающий: — Я выучил SQL за неделю! Опытный: — Поздравляю. Ты выучил SELECT, INSERT, UPDATE, DELETE. Осталось лет 5 на JOIN, индексы, транзакции и почему NULL — это зло. Удачи.
Индекс говорит таблице: — Милая, я ускоряю твои SELECT-ы в 1000 раз! Таблица вздыхает: — А я из-за тебя при каждом INSERT-е торможу. Индекс: — Ничего, я кластерный. Без меня ты просто куча мусора на диске.