Загрузка…
Загрузка…
Go · junior · сложность 4
View и Materialized View оба представляют собой сохраненный запрос, но принципиально различаются способом хранения результата и стоимостью чтения.
View:Это логическая «виртуальная таблица», основанная на SQL-запросе.
Данные физически не хранятся отдельно.
Каждый запрос к представлению фактически повторно выполняет базовый SQL.
Materialized View:Это физически сохраненный результат запроса.
Чтение обычно происходит намного быстрее, потому что вам не нужно пересчитывать сложные присоединяйтесь/агрегируйте каждый раз.
Данные могут устареть на REFRESH.
View = всегда актуальные данные, но более высокая стоимость вычислений.
Materialized View = быстрое чтение, но с компромиссом в отношении актуальности данных.
Materialized View:Тяжелые аналитические запросы и агрегации.
Часто читайте отчеты с менее частыми обновлениями.
Сценарии, в которых допустима контролируемая задержка релевантности.
View достаточно:Требуются самые актуальные данные в режиме реального времени.
Запрос не слишком дорогой.
View используется как абстракция логического доступа, а не как кеш.
Materialized View по сути представляет собой управляемый кэш результатов SQL с явным обновлением; обычный View — это чистая логическая проекция без хранения данных. Выбор между ними — это баланс между свежестью и скоростью.
CREATE MATERIALIZED VIEW mv_daily_sales AS
SELECT date_trunc('day', created_at) AS day,
sum(amount) AS total
FROM payments
GROUP BY 1;
-- Оновлення знімка даних
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_daily_sales;View и Materialized View оба представляют собой сохраненный запрос, но принципиально различаются способом хранения результата и стоимостью чтения.