Partial Index (частичный индекс)
Индекс с условием WHERE — индексирует только часть строк таблицы.
CREATE INDEX idx_name ON table (column) WHERE condition;
Объяснение
Пример
-- Только активные пользователи CREATE INDEX ON users (email) WHERE is_active = true; -- Незакрытые задачи CREATE INDEX ON tasks (assigned_to, due_date) WHERE status != 'done';
Связанные термины
Анекдоты по теме
Разработчик пишет: SELECT * FROM a JOIN b ON a.id = b.a_id JOIN c ON b.id = c.b_id JOIN d ON c.id = d.c_id JOIN e ON d.id = e.d_id JOIN f ON e.id = f.e_id DBA: ты только что создал цепочку из 6 JOIN. Разработчик: и что? DBA: надеюсь, у тебя везде есть индексы.
— Что такое covering index? — Индекс, который содержит все нужные для запроса колонки. — Зачем? — Запрос читает только индекс, не обращаясь к таблице. Index-only scan. — Пример? — CREATE INDEX ON orders (user_id) INCLUDE (total, created_at); SELECT total, created_at FROM orders WHERE user_id = 1; — читает только индекс.
Таблица на 10 строк: всё работает молниеносно. Таблица на 10 000 строк: всё ещё быстро. Таблица на 10 000 000 строк: добавь индексы. Таблица на 10 000 000 000 строк: пора поговорить о партиционировании.