WEB开发网
开发学院数据库DB2 DB2 基础: 物化查询表简介 阅读

DB2 基础: 物化查询表简介

 2009-11-20 00:00:00 来源:WEB开发网   
核心提示: 总结表您应该记得,总结表是一种特殊类型的 MQT,DB2 基础: 物化查询表简介(4),它们的 fullselect 包含一个 GROUP BY 子句,该子句总结 fullselect 中所引用表中的数据,类似地,在对底层表执行 update 或 delete 操作之后,清单 3 展示了一个简单

总结表

您应该记得,总结表是一种特殊类型的 MQT,它们的 fullselect 包含一个 GROUP BY 子句,该子句总结 fullselect 中所引用表中的数据。清单 3 展示了一个简单的创建总结表的例子。该表名为 SALES_SUMMARY,它基于 SAMPLE 数据库中的底层表 SALES。同样,DATA INITIALLY DEFERRED 子句的意思是,在执行 CREATE TABLE 语句的时候,并不将数据插入到表中。REFRESH DEFERRED 子句的意思是,在任何时候都可以用 REFRESH TABLE 语句刷新该表中的数据。当这个 MQT 刚创建且还没有发出 REFRESH TABLE 语句的时候,对它的查询将返回一个错误。而执行了 REFRESH TABLE 语句之后,对它的查询可以成功运行。

在对 SALES 表执行插入操作,再刷新总结表之后,对总结表的查询表明,对底层表的更改已经反映到总结表中:销售员 Lee 在 Ontario-South 地区的总销售量增加了 100。类似地,在对底层表执行 update 或 delete 操作之后,也可以在总结表中观察到相应的变化。


清单 3. 创建总结表
connect to sample 
... 
 
create table sales_summary as (select sales_person, region, sum(sales) 
 as total_sales 
 from sales group by sales_person, region) 
 data initially deferred refresh deferred 
 
select * from sales_summary 
 
SALES_PERSON  REGION     TOTAL_SALES 
--------------- --------------- ----------- 
SQL0668N Operation not allowed for reason code "1" on table 
"MELNYK.SALES_SUMMARY". SQLSTATE=57016 
 
refresh table sales_summary 
 
select * from sales_summary 
 
SALES_PERSON  REGION     TOTAL_SALES 
--------------- --------------- ----------- 
GOUNOT     Manitoba         15 
GOUNOT     Ontario-North       1 
GOUNOT     Ontario-South      10 
GOUNOT     Quebec          24 
LEE       Manitoba         23 
LEE       Ontario-North       8 
LEE       Ontario-South      34 
LEE       Quebec          26 
LUCCHESSI    Manitoba         3 
LUCCHESSI    Ontario-South       8 
LUCCHESSI    Quebec          3 
 
 11 record(s) selected. 
 
insert into sales values ('06/28/2005', 'LEE', 'Ontario-South', 100) 
 
refresh table sales_summary 
 
select * from sales_summary 
 
SALES_PERSON  REGION     TOTAL_SALES 
--------------- --------------- ----------- 
... 
LEE       Ontario-North       8 
LEE       Ontario-South      134 
LEE       Quebec          26 
... 
 
 11 record(s) selected. 
 
update sales set sales = 50 where sales_date = '06/28/2005' and 
sales_person = 'LEE' 
 and region = 'Ontario-South' 
 
refresh table sales_summary 
 
select * from sales_summary 
 
SALES_PERSON  REGION     TOTAL_SALES 
--------------- --------------- ----------- 
... 
LEE       Ontario-North       8 
LEE       Ontario-South      84 
LEE       Quebec          26 
... 
 
 11 record(s) selected. 
 
delete from sales where sales_date = '06/28/2005' and sales_person = 'LEE' 
 and region = 'Ontario-South' 
 
refresh table sales_summary 
 
select * from sales_summary 
 
SALES_PERSON  REGION     TOTAL_SALES 
--------------- --------------- ----------- 
... 
LEE       Ontario-North       8 
LEE       Ontario-South      34 
LEE       Quebec          26 
... 
 
 11 record(s) selected. 
 
connect reset 

上一页  1 2 3 4 5 6 7  下一页

Tags:DB 基础 物化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接