带您了解DB2物化视图


  本文标签:DB2物化视图

  DB2物化视图(MQT)是一类特殊的视图,下面就为您详细介绍DB2物化视图,供您参考,希望对您学习DB2数据库能够有所帮助  。

  可以将MQT看作一种物化的视图  。视图和MQT 都是基于一个查询来定义的  。每当视图被引用时,视图所基于的查询便会运行  。但是,MQT 实际上则是将查询结果保存为数据,可以使用 MQT 中的这些数据,而不是使用底层表中的数据  。

  物化查询表可以显著提高查询的性能,尤其是提高复杂查询的性能  。如果优化器确定查询或查询的一部分可以用一个 MQT 来解决,那么就会重写查询,以便利用MQT  。MQT可以在创建表时定义,或者定义为系统维护的MQT,或者定义为用户维护的 MQT  。

  当创建系统维护s的DB2物化视图时,可以指定表数据是 REFRESH IMMEDIATE 还是 REFRESH DEFERRED  。通过 REFRESH 关键字可以指定如何维护数据  。DEFERRED 的意思是,表中的数据可以在任何时候通过 REFRESH TABLE 语句来刷新  。不管是 REFRESH DEFERRED 还是 REFRESH IMMEDIATE 类型的系统维护的 MQT,对它们的 insert、update 或 delete 操作都是不允许的  。但是,对于 REFRESH IMMEDIATE 类型的系统维护的 MQT,可以通过 对底层表的更改(即 insert、update 或 delete 操作)来更新  。

  1. create table course_query as   
  2. (   
  3. select courseware_id, other_courseware_name from   
  4. (   
  5. select distinct courseware_id, other_courseware_name   
  6. from metadata   
  7. where other_courseware_name in   
  8. (   
  9. select distinct Other_courseware_name   
  10. from METADATA   
  11. where is_delete like 0   
  12. )   
  13. )    
  14. )  
  15. data initially deferred refresh deferred;  
  16. refresh table course_query;