由于聚集函数的计算很费时间,在数据仓库中常常把这些计算结果当作实视图(materialized view)保存起来,一次计算,可供多次使用。

  针对数据仓库以读为主的特点,把查询中常用的结果定义为视图,并将事先计算好的视图存于数据仓库中。这种既有逻辑定义,又在数据库中存有对应表的视图称为实视图。

  以前面的连锁商店的销售表为例,说明如何用聚集函数定义实视图。以P(product)、S(store)、D(date)表示产品、商店和日期,以SUM聚集函数为代表。

  从事实表可以定义下列4种实视图:

 (1) PSD视图

  CREATE VIEW PSD (产品标识符, 商店标识符, 日期标识符, 销售总额) AS
  SELECT 产品标识符, 商店标识符, 日期标识符, SUM(销售总额) AS 销售总额
  FORM 销售表
  GROUP BY 产品标识符, 商店标识符, 日期标识符

  PSD视图相当于把事实表变换为一组维值对应一个量值的表。

 (2) PS视图、SD视图、PD视图

 定义PS视图的语句如下所示:

  CREATE VIEW PS (产品标识符, 商店标识符, 销售总额) AS
  SELECT 产品标识符, 商店标识符, SUM(销售总额) AS 销售总额
  FORM PSD
  GROUP BY 产品标识符, 商店标识符

  SD视图、PD视图可以类似地定义。PS、SD、PD用PSD实视图来定义,而不是用事实表来定义,可以节省计算量。