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

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

 2007-05-13 12:29:11 来源:WEB开发网   
核心提示: 考虑一下清单 1中所创建的物化视图,该视图按月按product_id计算销售总额和销售总次数,高速高效 创建物化视图提高查询速度(2),注意:对于用于查询改写的物化视图,必须有ENABLE QUERY REWRITE子句,优化器可以使用物化视图monthly_sales_mv,利用SUM和

考虑一下清单 1中所创建的物化视图,该视图按月按product_id计算销售总额和销售总次数。注意:对于用于查询改写的物化视图,必须有ENABLE QUERY REWRITE子句。还有,初始化参数QUERY_REWRITE_ENABLED必须被设置为TRUE。

代码清单 1:创建月销售物化视图

  CREATE MATERIALIZED VIEW monthly_sales_mv
  ENABLE QUERY REWRITE
  AS
  
  SELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales,
  COUNT (ps.purchase_price) as total_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.product_id;

集合计算

在本文的示例中,我们将说明物化视图的查询并显示由EXPLAIN PLAN得到的执行计划。清单 2中的查询要求按月和按产品的平均采购价格。优化器可以使用物化视图monthly_sales_mv,利用SUM和COUNT集合计算平均采购价格。这个示例说明了一种叫做“集合计算”的技术。

代码清单 2:获得平均(AVG)采购价格  SELECT t.month, p.product_id, AVG(ps.purchase_price) as avg_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.product_id;
  
  Id  Operation           Name
  
  ________________________________________________
  SELECT STATEMENT
  MAT_VIEW REWRITE ACCESS FULL      MONTHLY_SALES_MV

上一页  1 2 3 4  下一页

Tags:高速 高效 创建

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