科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道解析:通过创建物化视图来提高查询速度

解析:通过创建物化视图来提高查询速度

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

有了物化视图,那些过去需要数小时运行的报告可以在几分钟内完成。物化视图可以包括联接(join)和集合(aggregate),它提供了一种储存预计算结果的方法。

作者:赛迪网 yuanyang 来源:天新网 2008年3月26日

关键字: 数据库 Mssql SQL Server SQL

  • 评论
  • 分享微博
  • 分享邮件

代码清单 4:通过joinback和HIERARCHY获得销售总额

  SELECT t.year, 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.year, p.category;
  
  Id  Operation            Name
  
  __________________________________________________
  0  SELECT STATEMENT
  1   SORT GROUP BY
  2   HASH JOIN
  
  3    HASH JOIN
  
  4    VIEW
  5     SORT UNIQUE
  6     TABLE ACCESS FULL     TIME
  7    MAT_VIEW REWRITE ACCESS FULL MONTHLY_SALES_MV
  8    TABLE ACCESS FULL       PRODUCT

维度的ATTRIBUTE子句指明了一对一关系。例如,你可以判定从time_key开始是一周中的哪一天。假设你希望得到每年1月份的销售总额:你仍然可以使用清单 5中所示的monthly_sales_mv物化视图。注意该查询的WHERE子句如何具有一个在物化视图中没有出现的选择条件。

代码清单 5:通过joinback和ATTRIBUTE获得销售总额

  
  SELECT t.year, 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 AND
  t.month_name = 'January'
  
  GROUP BY t.year, p.category;
  
  Id  Operation            Name
  __________________________________________________
  0  SELECT STATEMENT
  1   SORT GROUP BY
  
  2   HASH JOIN
  
  3    HASH JOIN
  4    VIEW
  5     SORT UNIQUE
  6     TABLE ACCESS FULL     TIME
  7    MAT_VIEW REWRITE ACCESS FULL MONTHLY_SALES_MV
  8   TABLE ACCESS FULL       PRODUCT

如果优化器并未如期改写一个查询,你可以使用DBMS_MVIEW .EXPLAIN_REWRITE 过程来诊断此问题。注释:这一特性出现在Oracle9i数据库及以后的版本中。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章