WEB开发网
开发学院数据库Oracle 高速高效 创建物化视图提高查询速度 阅读

高速高效 创建物化视图提高查询速度

 2007-05-13 12:29:11 来源:WEB开发网   
核心提示: JoinbackJoinback技术非常有用,因为它允许当物化视图中没有列时进行查询改写,高速高效 创建物化视图提高查询速度(3),清单 3中的查询要求按月和按产品类别的销售总额,而该物化视图中并没有product.category列,Oracle不会验证这一关系对于你的数据是否一定成立,

Joinback

Joinback技术非常有用,因为它允许当物化视图中没有列时进行查询改写。清单 3中的查询要求按月和按产品类别的销售总额,而该物化视图中并没有product.category列。然而,产品表的主键product_id列则位于物化视图中。因此,优化器可以将物化视图与产品表联接起来以得到产品类别。

代码清单 3:通过joinback获得销售总额  SELECT t.month, p.category,
  SUM(ps.purchase_price) as sum_of_sales
  
  FROM time t, product p, purchases ps
  WHERE t.time_key = ps.time_key AND
  ps.product_id = p.product_id
  
  GROUP BY t.month, p.category;
  
  Id  Operation           Name
  __________________________________________________
  
  0  SELECT STATEMENT
  1   SORT GROUP BY
  2   HASH JOIN
  3    TABLE ACCESS FULL      PRODUCT
  
  4    MAT_VIEW REWRITE ACCESS FULL MONTHLY_SALES_MV

使用维度进行查询改写

在一个使用维度建模技巧设计的典型数据仓库中,数据中存在着著名的“层次关系”。例如,在时间层次中,“天”积累成“月”,“月”又积累成“年”。在Oracle数据库中,可以使用CREATE DIMENSION语句创建一个叫做“DIEMNSION”的对象,向优化器声明这种关系。维度对象是一个描述性对象,除了其元数据外,它不占用空间。使用DIMENSION对象声明的关系据说是可信的。Oracle不会验证这一关系对于你的数据是否一定成立,它只是假设数据库管理员已经判定这些关系是正确的。可信信息的其他示例是使用NOVALIDATE RELY标记的约束及注册为物化视图的先存表。

上一页  1 2 3 4  下一页

Tags:高速 高效 创建

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