使用 MQT物化查询表(Materialized Query Tables MQT)
MQT 的定义基于查询的结果MQT 可以显着提高查询的性能本教程将介绍 MQT总结表(summary table)和 staging 表并通过一些实用的例子展示如何创建和使用物化查询表
MQT 是基于查询的结果定义的一个表MQT 中包含的数据来自 MQT 定义所基于的一个或多个表总结表(也称自动总结表[AST])对于 IBM DB for Linux UNIX and Windows 的用户来说应该感到比较熟悉它们可以看作是特殊的 MQTfullselect 是总结表定义的一部分它包含一个 GROUP BY 子句该子句总结 fullselect 中所引用表中的数据
您可以将 MQT 看作一种物化的视图视图和 MQT 都是基于一个查询来定义的每当视图被引用时视图所基于的查询便会运行但是MQT 实际上会将查询结果存储为数据您可以使用 MQT 中的这些数据而不是使用底层表中的数据MQT 可以显着提高查询的性能尤其是提高复杂查询的性能如果优化器确定查询或查询的一部分可以用一个 MQT 来解决那么查询就可以被重写以便利用 MQTMQT 可以在创建表时定义可以定义为由系统维护也可以定义为由用户维护
这种 MQT 中的数据是由系统维护的当创建这种类型的 MQT 时可以指定表数据是 REFRESH IMMEDIATE 还是 REFRESH DEFERRED通过 REFRESH 关键字可以指定如何维护数据DEFERRED 的意思是表中的数据可以在任何时候通过 REFRESH TABLE 语句来刷新系统维护的 MQT不管是 REFRESH DEFERRED 类型的还是 REFRESH IMMEDIATE 类型的对它们的插入更新或删除操作都是不允许的但是对于 REFRESH IMMEDIATE 类型的系统维护的 MQT可以通过 对底层表的更改(即插入更新或删除操作)来更新
[] []