使用具体化查询表查询优化
具体化查询表 (MQT) 能够显著缩短复杂分析查询的响应时间,因为这些表的数据包含您在具体化查询表定义中所指定表的预先计算的结果。
MQT 有助于明确缩短使用下列其中一种或多种数据类型的查询的响应时间:
- 基于一个或多个维聚集数据
- 连接和聚集涉及一组表的数据
- 经常访问的数据的子集中的数据
- 在分区数据库环境中,表或表的一部分中重新分区的数据
MQT 的知识已集成到 SQL 和 XQuery 编译器中。 在查询重写阶段,优化器确定是否使用可用 MQT 来代替直接访问被引用基本表。 如果使用 MQT,那么您需要对基本表的访问特权而不需要对 MQT 的访问特权,并且说明工具可提供有关选择哪些 MQT 的信息。
MQT 能够有效消除各个查询之间重叠的工作。 这些计算只是在 MQT 构建时执行一次并在 MQT 每次被刷新时执行一次,MQT 的内容可以在多个查询的执行期间重复使用。
由于 MQT 的行为在许多方面类似于常规表,因此使用表空间定义和索引来优化数据访问以及通过运行 RUNSTATS 实用程序优化数据访问的准则。
Db2® Cancun Release 10.5.0.4 和更高版本包含对 按列组织 用户维护的 MQT 的支持。
如果要从 V 10.1 或更低发行版升级 Db2 服务器,并且计划将具有现有 MQT 的 按行组织的 表转换为按列组织的表,那么使用 按列组织的 用户维护的 MQT 可以简化可移植性并提高查询性能。