我已經物化視圖,我想改變它的刷新時間:物化視圖 - 甲骨文
REFRESH FORCE START WITH SYSDATE NEXT SYSDATE +1 DISABLE QUERY REWRITE
我想知道在這幾件事情。
- 什麼NEXT SYSDATE +1繪出了(怎麼我要去改變它)
- 什麼是DISABLE QUERY REWRITE
換句話說DISABLE QUERY REWRITE VS ENABLE QUERY REWRITE相對於物化視圖。
我已經物化視圖,我想改變它的刷新時間:物化視圖 - 甲骨文
REFRESH FORCE START WITH SYSDATE NEXT SYSDATE +1 DISABLE QUERY REWRITE
我想知道在這幾件事情。
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
查詢引擎可以採取常規選擇語句的上方,並直接從物化視圖中檢索數據,而無需做一個潛在的昂貴的連接(因爲連接已經由MV完成)。這是查詢重寫。
This question描述了with sysdate next
子句的作用。顯然,它告訴數據庫,下一個刷新日期將在1天(系統日期+1)。
但是,如果我查詢「select * from emp_salary」,它將帶來與「select last_name,salary from employee,pay_rate where employee.id = pay_rate.employee_id」相同的結果,甚至不啓用查詢重寫。 –
@ShahJee正確,但您需要更改所有應用程序代碼以使用新的物化視圖。查詢重寫允許您的應用程序執行更高效的查詢,而無需更改應用程序。這樣,沒有人需要知道MV。他們只是坐在那裏,在適當的時候使用。 DBA現在可以編寫應用程序可以使用的更有效的查詢,而無需知道它們甚至存在。 –
物化視圖的主要優點之一是能夠使用查詢重寫...不太確定爲什麼你會禁用查詢重寫。
查詢重寫允許使用物化視圖來代替實際的細節表。
oracle使用NEXT值來確定第一次自動刷新。所以在你的例子中,它會在創建後1天第一次刷新,然後每天刷新。
更改爲SYSDATE + 6/24每6小時運行一次!
如果我想將刷新時間更改爲每小時6次,那麼sytax會是什麼。 –
我認爲你可以做sysdate + 6/24而不是sysdate + 1 – c0deNinja
這將是一個很好的問題http://dba.stackexchange.com/,但我不知道如何投票移動(這不是一個選項)。 –