Введение
В DB2 таблица материализованных запросов (MQT) представляет собой таблицу, определение которой основано на результатах выполнения запроса. По существу, MQT содержит предварительно полученные результаты, базирующиеся на данных из таблиц, на основе которых определена MQT. Если компилятор запросов определяет, что запрос к MQT будет более эффективен, чем к базовой таблице или таблицам, запрос выполняется к MQT, и результат возвращается быстрее, чем в противном случае. Эта концепция идентична концепции материализованных представлений в Oracle.
Сравнение таблиц материализованных запросов DB2 в с материализованными представлениями Oracle
(1) CREATE TABLE
DB2 использует синтаксис CREATE TABLE в отличие от CREATE MATERIALIZED VIEW, используемого Oracle. DB2 называет MQT "таблицами", а не "представлениями", поэтому и использует синтаксис CREATE TABLE при их создании. DB2 знает о том, что это таблица материализованных запросов, а не обычная таблица, потому что, во-первых, MQT всегда создаются из другой таблицы или набора таблиц и, во-вторых, DDL-выражение создания MQT не указывает в конце "FOR DEFINITION ONLY". Если вы хотите создать обычную (не MQT) таблицу, определенную из другой таблицы, используйте ключевые слова FOR DEFINITION ONLY.
(2) TABLENAME.SCHEMANAME
DB2 позволяет определить MQT, используя любой спецификатор схемы (schema qualifier) и имя, которое вы хотите. Как и в Oracle, всему оператору SELECT, создающему MQT, предшествует AS.
(3) AS SELECT
DB2 использует оператор SELECT для определения тела MQT. Разрешено выбирать подмножества, полные выборки и даже соединения таблиц. Такая же концепция и в Oracle. Примечание: Существует много исключений и предостережений, касающихся того, что может быть в DB2 MQT (также как и в Oracle), но в данной статье эти вопросы не будут рассматриваться детально. Четкие правила создания MQT приведены в документации по DB2.
Ссылки по теме