2011-08-23 113 views
4

我有持有對不同事件的信息,例如甲骨文物化視圖的問題

CREATE TABLE events (
    id int not null primary key, 
    event_date date, ... 
) 

我意識到,90%的所有查詢的訪問纔有了今天的活動表;較舊的行將存儲爲歷史記錄並最終移至歸檔表。
但是,事件表仍然很大,我不知道是否可以通過創建具有類似WHERE event_date = trunc(sysdate)的物化視圖以及可能在event_date上的索引來提高性能?它是否允許?

感謝

回答

4

是的,這是允許看到「主鍵物化視圖」:

主鍵物化視圖可以包含一個子查詢,這樣就可以 遠程在創建行的子集物化視圖網站

和 「複雜的物化視圖」

如果您很少刷新並且想要更快的查詢性能,請使用方法A(複雜物化視圖) 。
如果定期刷新並且可以犧牲查詢性能,則使用方法B(簡單物化視圖)。

http://download.oracle.com/docs/cd/B10500_01/server.920/a96567/repmview.htm

在您的例子有很好的機會恕我直言,這不是一個「複雜的物化視圖」:

CREATE MATERIALIZED VIEW events_today REFRESH FAST AS 
SELECT * FROM EVENT WHERE event_date = trunc(sysdate); 

只是嘗試一下,看看如果甲骨文與REFRESH FAST接受它條款。

編輯 - 另一種選擇:

根據您的DB版(Enterprise +分區)和版本(11gR2的),你可以使用一個稱爲間隔分區新的Oracle功能將現有中定義「每日分區」表。通過這種方式,大多數查詢得到的速度很快,但沒有有效地複製數據 - 請參閱http://www.oracle.com/technetwork/database/options/partitioning/twp-partitioning-11gr2-2009-09-130569.pdf

+0

感謝您的鏈接,所以我將對該視圖進行較慢的刷新,但快速選擇對吧? – a1ex07

+0

恩,我沒有看到你的更新答案。再次感謝。 – a1ex07

+0

歡迎您,仍在編輯 - HTH :-) – Yahia