INDEX (индекс)
Структура данных, ускоряющая поиск строк по значению колонки.
CREATE INDEX [CONCURRENTLY] idx_name ON table (column); CREATE INDEX ON table (col1, col2); -- составной
Объяснение
Пример
-- Простой индекс CREATE INDEX ON users (email); -- Составной (порядок важен!) CREATE INDEX ON orders (user_id, created_at DESC); -- Частичный — только активные CREATE INDEX ON users (email) WHERE is_active = true;
Связанные термины
Анекдоты по теме
— Что такое HOT update в PostgreSQL? — Heap Only Tuple. Если обновлённые колонки не входят в индексы — PostgreSQL обновляет строку без изменения индекса. — Это быстрее? — Значительно. Индекс не трогается.
Оптимизатор запросов говорит медленному подзапросу: — Ты почему такой тормоз? Подзапрос (ковыряя IN (SELECT ...)): — Я каждую строчку с каждой сравниваю. Зато честно. Оптимизатор: — Используй EXISTS. Подзапрос, помолчав: — Так я не знаю, существую ли я на самом деле после этого...
Junior пишет: WHERE YEAR(created_at) = 2024 AND MONTH(created_at) = 1 Senior переписывает: WHERE created_at >= '2024-01-01' AND created_at < '2024-02-01' — В чём разница? — Первый вариант не использует индекс. Функция от колонки = нет индекса.