Materialized View (материализованное представление) – это объект базы данных (таблица) , содержащий результаты запроса . Такие представления дают возможность ускорить в разы выполнение запросов, обращающихся к большому количеству данных. Добиваются этого за счет использования заранее вычисленных итоговых данных и результатов объединений таблиц. Такие данные как правило имеют очень относительно небольшой объем по сравнению с исходными данными.
Обычное представление (не материализованное) в реляционной СУБД представляет собой виртуальную таблицу , представляющую результат запроса к базе данных. Каждый раз, когда запрос или команда обновления обращаются к виртуальной таблице обычного представления, СУБД преобразует их в запросы или обновления базовых таблиц.
Материализованное представление же использует другой подход: результат запроса фактически кэшируется как конкретная («материализованная») таблица (а не представление как таковое).
Актуальность данных в материализованных представлениях поддерживается за счёт периодических синхронизаций или с использованием триггеров.
В материализованном представлении индексы могут быть добавлены для любого столбца. А в обычном представлении как правило можно использовать индексы только для столбцов, которые имеют отображение индексированных столбцов из базовых таблиц.
Для реализации в некоторых СУБД есть встроенные средства. Такая функциональность имеется, например, в Oracle, PostgreSQL и MSSQL. В MySql нет такой возможности из коробки, но есть способы реализовать вручную.
Применение materialized view, очевидно, будет весьма полезно в случаях, когда имеется много обращений к большому количеству данных (за длительный период например). Если каждый раз при таком обращении необходимо выполнять подчиненные запросы или объединения таблиц, то использование материализованных представлений вместо этого позволит получать данные быстрее и с использованием меньших ресурсов (тоесть дешевле).