Правило левого префикса
Вопрос
Есть индекс (customer_id, created_at). Какой запрос в PostgreSQL 16 не сможет эффективно искать по этому индексу?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
WHERE customer_id = 5WHERE created_at > '2026-01-01'правильный ответWHERE customer_id = 5 AND created_at > '2026-01-01'WHERE customer_id = 5 ORDER BY created_at
Разбор
Составной индекс отсортирован сначала по customer_id, и записи с нужными датами разбросаны по всему дереву, поэтому спуститься к ним по дереву нельзя. Остальные запросы начинаются с ведущей колонки: равенство по customer_id и затем диапазон или сортировка по created_at идеально ложатся на индекс. В PostgreSQL 18 появился skip scan, который в некоторых случаях обходит это ограничение при малом числе разных значений ведущей колонки, но правило порядка колонок всё равно главное.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.