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';
Связанные термины
Анекдоты по теме
Таблица на 10 строк: всё работает молниеносно. Таблица на 10 000 строк: всё ещё быстро. Таблица на 10 000 000 строк: добавь индексы. Таблица на 10 000 000 000 строк: пора поговорить о партиционировании.
Оптимизатор запросов говорит медленному подзапросу: — Ты почему такой тормоз? Подзапрос (ковыряя IN (SELECT ...)): — Я каждую строчку с каждой сравниваю. Зато честно. Оптимизатор: — Используй EXISTS. Подзапрос, помолчав: — Так я не знаю, существую ли я на самом деле после этого...
— Почему LIKE '%слово%' работает медленно? — Потому что % в начале не позволяет использовать индекс. База читает все строки. — Как ускорить? — Full-text search (tsvector/tsquery) или специальный индекс (pg_trgm).