大湖之子 发表于 2016-11-18 09:41:59

DB2物化表

  DB2物化查询表(MQT)是DB2数据库中一类特殊的表
  物化表和视图的区别
  物化表是一个查询结果集,视图是一个SQL语句。
  以下是一个简单例子(说明物化表)
  1.创建表,插入测试数据



----创建表
CREATE TABLE UserInfo
(
ID    INT NOT NULL,
NAMEVARCHAR(20),
Hight INT,
sex    CHAR(2)
)
--*********************************************************************
------------------------values插入数据---------------------------------
--*********************************************************************
--------------------------单条数据插入
INSERT INTO UserInfo(ID,NAME,Hight,sex) VALUES(1,'杭允贤','168','女');
--------------------------插入多条数据
INSERT INTO UserInfo(ID,NAME,Hight,sex) VALUES(2,'王振','175','男'),(3,'朱祁钰','173','男')
  2.创建物化表



SELECT * FROM new_UserInfo
create table new_UserInfo as   
(select * from UserInfo)   
data initially deferred refresh IMMEDIATE;
refresh table new_UserInfo;
  注意:在创建时可能会出现以下错误(导致出错的原因是:对于refresh immediate类型的MQT在select时必须包含所FROM的每个表的至少一个唯一键。假如不包含唯一键,则会报错:SQLSTATE:428EC (为具体化查询表,指定的全查询无效)。)

  解决办法:



ALTER TABLE UserInfo ADD UNIQUE(ID)
  表UserInfo截图

  表new_UserInfo截图

  现在在表UserInfo中插入一条数据,查询出表new_UserInfo的结构如下:



INSERT INTO UserInfo(ID,NAME,Hight,sex) VALUES(4,'杭刚','177','男');

  这是自动更新物化表,同时也可以将物化表改为手动更新的
页: [1]
查看完整版本: DB2物化表