WEB开发网
开发学院数据库Oracle Oracle数据库11g新特性:数据仓库和OLAP 阅读

Oracle数据库11g新特性:数据仓库和OLAP

 2008-12-16 13:01:34 来源:WEB开发网   
核心提示: 当用户查询与 MV 的定义查询类似时将会发生查询重写,在过去的版本中,Oracle数据库11g新特性:数据仓库和OLAP(9),如果查询不想死,将不会重写查询,SQL> alter session set query_rewrite_enabled = true;Session al

当用户查询与 MV 的定义查询类似时将会发生查询重写。在过去的版本中,如果查询不想死,将不会重写查询。但在 Oracle 数据库 11g 中,这些规则将更加宽松。请看如下所示的 MV:

create materialized view mv4
    enable query rewrite
as
select  prod_id, cust_id, avg (rate) tot_qty
  from (select s.prod_id, cust_id, amount_sold / quantity_sold rate
      from sales s, products p
      where s.prod_id = p.prod_id) sq
group by prod_id, cust_id
/

它使用内联查询,行源实际上是另一个查询(FROM 中的子句实际上是内联查询)。如果您写入一个与 MV 的定义查询类似的查询(使用同一个内联视图),现在您将看到正在发生重写。使用 AUTOTRACE 检查执行路径。

SQL> alter session set query_rewrite_enabled = true;
Session altered.
SQL> alter session set query_rewrite_integrity = stale_tolerated;
Session altered.
SQL> set autotrace traceonly explain
SQL> select pid, cid, avg(item_rate) avg_item_rate
 2 from (select s.prod_id pid, cust_id cid, amount_sold/quantity_sold item_rate
 3 from sales s, products p
 4 where p.prod_id = s.prod_id)
 5 group by cid, pid;
Execution Plan
----------------------------------------------------------
Plan hash value: 3944983699
-------------------------------------------------------------------------------------
| Id | Operation          | Name | Rows | Bytes | Cost (%CPU)| Time   |
-------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT       |   |  287K|  10M|  226  (2)| 00:00:03 |
|  1 | MAT_VIEW REWRITE ACCESS FULL| MV4 |  287K|  10M|  226  (2)| 00:00:03 |
-------------------------------------------------------------------------------------
Note
-----
  - dynamic sampling used for this statement

注意上面 Id=1 的情况;查询使用我们之前创建的物化视图 MV4 进行了重写。即使 MV 和查询使用了内联视图(或子查询),也会发生查询重写。

上一页  4 5 6 7 8 9 10  下一页

Tags:Oracle 数据库 特性

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