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 подскажет развёрнутый ответ в реальном времени.