Выбор ответа Senior Индексы обновлено
Частичный индекс
Вопрос
Создан индекс CREATE INDEX ON orders (created_at) WHERE status = 'new'. Для какого запроса он может быть использован?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: WHERE status = 'new' AND createdat < now() - interval '1 hour'. Частичный индекс содержит только строки, где status = 'new', поэтому применим, только если условие запроса гарантирует то же самое.
Варианты ответа
WHERE status = 'paid' AND created_at < now() - interval '1 hour'WHERE status = 'new' AND created_at < now() - interval '1 hour'правильный ответWHERE created_at < now() - interval '1 hour'WHERE status IN ('new', 'paid')
Разбор
Частичный индекс содержит только строки, где status = 'new', поэтому применим, только если условие запроса гарантирует то же самое. Для paid или без условия на статус нужные строки в индексе просто отсутствуют. Такой индекс маленький и быстрый: типичное применение для очередей «необработанных» записей.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Почему не используется индекс по статусу
Следующий вопрос
Порядок колонок в составном индексе