我已经实现了视图,我想更改它的刷新时间:
REFRESH FORCE START WITH SYSDATE NEXT SYSDATE +1 DISABLE QUERY REWRITE我不想知道这件事。
换句话说,禁用查询重写与启用查询重写有关物化视图。
发布于 2011-12-08 23:12:26
oracle中的物化视图支持名为查询重写的功能。这意味着数据库可以分析对基表的特定查询,决定是否从物化视图返回相同的结果,并查询MV而不是基表。在某些情况下,这可能是一个很好的优化。告诉oracle禁用查询重写意味着放弃这种潜在的优化,并且总是查询基表,即使对MV的查询会返回相同的数据。
例如:
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
;然后执行一个查询:
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)。
发布于 2011-12-08 23:12:44
物化视图的主要优点之一是能够使用查询重写.不太确定为什么要禁用查询重写。
查询重写允许使用物化视图而不是实际的明细表。
oracle使用下一个值来确定第一次自动刷新。所以在您的示例中,它将在创建后的第一天第一次刷新,并从那时起每天刷新。
改为SYSDATE + 6/24,每6小时运行一次!
https://stackoverflow.com/questions/8438975
复制相似问题