Ejemplos de MQT
A continuación se muestran ejemplos de utilización de MQT.
Ejemplo 1
SELECT D.deptname, D.location, E.firstnme, E.lastname, E.salary+E.comm+E.bonus as total_sal
FROM Department D, Employee E
WHERE D.deptno=E.workdept
AND E.job = 'DESIGNER'CREATE TABLE MQT1
AS (SELECT D.deptname, D.location, E.firstnme, E.lastname, E.salary, E.comm, E.bonus, E.job
FROM Department D, Employee E
WHERE D.deptno=E.workdept)
DATA INITIALLY IMMEDIATE REFRESH DEFERRED
ENABLE QUERY OPTIMIZATION
MAINTAINED BY USERSELECT M.deptname, M.location, M.firstnme, M.lastname, M.salary+M.comm+M.bonus as total_sal
FROM MQT1 M
WHERE M.job = 'DESIGNER'En esta consulta, la MQT coincide con parte de la consulta de usuario. La MQT se coloca en la cláusula FROM y sustituye las tablas DEPARTMENT y EMPLOYEE. Cualquier selección restante no realizada por la consulta MQT (M.job= 'DESIGNER ') se realiza para eliminar las filas adicionales. Se calcula la expresión de resultado, M.salary+M.comm+M.bonus. JOB debe estar en la lista de selección de la MQT para que se pueda realizar la selección adicional.

Ejemplo 2
SELECT D.deptname, sum(E.salary)
FROM DEPARTMENT D, EMPLOYEE E
WHERE D.deptno=E.workdept AND D.location = 'NY'
GROUP BY D.deptnameCREATE TABLE MQT2
AS (SELECT D.deptname, D.location, sum(E.salary) as sum_sal
FROM DEPARTMENT D, EMPLOYEE E
WHERE D.deptno=E.workdept
GROUP BY D.Deptname, D.location)
DATA INITIALLY IMMEDIATE REFRESH DEFERRED
ENABLE QUERY OPTIMIZATION
MAINTAINED BY USERSELECT M.deptname, sum(M.sum_sal)
FROM MQT2 M
WHERE M.location = 'NY'
GROUP BY M.deptnamePuesto que la MQT podría producir potencialmente más grupos que la consulta original, la consulta resultante final debe agrupar de nuevo y SUM los resultados para devolver la respuesta correcta. Además, la selección M.location= 'NY ' debe formar parte de la nueva consulta.
