首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >物化视图- Oracle

物化视图- Oracle
EN

Stack Overflow用户
提问于 2011-12-08 23:03:28
回答 2查看 1.7K关注 0票数 2

我已经实现了视图,我想更改它的刷新时间:

代码语言:javascript
复制
REFRESH FORCE START WITH SYSDATE NEXT SYSDATE +1 DISABLE QUERY REWRITE

我不想知道这件事。

  1. 下一个SYSDATE +1描述了(我将如何更改它)
  2. 是什么禁用查询重写

换句话说,禁用查询重写与启用查询重写有关物化视图。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-08 23:12:26

oracle中的物化视图支持名为查询重写的功能。这意味着数据库可以分析对基表的特定查询,决定是否从物化视图返回相同的结果,并查询MV而不是基表。在某些情况下,这可能是一个很好的优化。告诉oracle禁用查询重写意味着放弃这种潜在的优化,并且总是查询基表,即使对MV的查询会返回相同的数据。

例如:

代码语言:javascript
复制
create materialized view emp_salary
  refresh fast on commit
  as
     select first_name, last_name, salary
     from employee, pay_rate
     where employee.id = pay_rate.employee_id
;

然后执行一个查询:

代码语言:javascript
复制
     select last_name, salary
     from employee, pay_rate
     where employee.id = pay_rate.employee_id

查询引擎可以使用上面的常规select语句,直接从物化视图检索数据,而不必执行可能昂贵的连接(因为连接已经由MV完成)。这是查询重写。

This question描述了with sysdate next子句的功能。显然,它告诉数据库下一个刷新日期是1天(sysdate +1)。

票数 4
EN

Stack Overflow用户

发布于 2011-12-08 23:12:44

物化视图的主要优点之一是能够使用查询重写.不太确定为什么要禁用查询重写。

查询重写允许使用物化视图而不是实际的明细表。

oracle使用下一个值来确定第一次自动刷新。所以在您的示例中,它将在创建后的第一天第一次刷新,并从那时起每天刷新。

改为SYSDATE + 6/24,每6小时运行一次!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8438975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档