Выбор ответа Senior Индексы обновлено

Частичный индекс

Вопрос

Создан индекс CREATE INDEX ON orders (created_at) WHERE status = 'new'. Для какого запроса он может быть использован?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: WHERE status = 'new' AND createdat < now() - interval '1 hour'. Частичный индекс содержит только строки, где status = 'new', поэтому применим, только если условие запроса гарантирует то же самое.

Варианты ответа

  1. WHERE status = 'paid' AND created_at < now() - interval '1 hour'
  2. WHERE status = 'new' AND created_at < now() - interval '1 hour'правильный ответ
  3. WHERE created_at < now() - interval '1 hour'
  4. WHERE status IN ('new', 'paid')

Разбор

Частичный индекс содержит только строки, где status = 'new', поэтому применим, только если условие запроса гарантирует то же самое. Для paid или без условия на статус нужные строки в индексе просто отсутствуют. Такой индекс маленький и быстрый: типичное применение для очередей «необработанных» записей.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.