Hardmaterialized-view

Что такое materialized view?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Materialized view — представление, которое физически хранит результат запроса (в отличие от обычного VIEW, вычисляемого на лету). Ускоряет тяжёлые отчёты ценой устаревания данных.

CREATE MATERIALIZED VIEW order_stats AS
SELECT user_id,
       COUNT(*)      AS orders_count,
       SUM(total)    AS total_sum
FROM orders
GROUP BY user_id;

-- Пересчёт (CONCURRENTLY — без блокировки чтения в PostgreSQL)
REFRESH MATERIALIZED VIEW CONCURRENTLY order_stats;

-- На материализованную вьюху можно вешать индексы
CREATE INDEX ON order_stats (total_sum);

Стратегии обновления: по расписанию (cron), по событию (после записи), on commit. Подходит для дашбордов и аналитики, где допустима небольшая задержка данных.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.