2012-02-15 87 views
1

我已經得到了我想要用來備份物化視圖的查詢。創建物化視圖遠遠低於創建表

當我使用這個語法從視圖中創建一個普通的表,其執行速度非常快(5秒):

create table my_table as select * from my_view; 

然而,當我嘗試從同一個視圖物化視圖,它是很慢(5分鐘以上)。

create materialized view my_materialized_view refresh complete start with sysdate next trunc(sysdate, 'HH') + (1/24) AS select * from my_view; 

我已經儘可能優化了視圖查詢。直接從視圖中選擇很快,並從視圖中創建任意數量的表。只有在我通過創建物化視圖後才能完成。

任何想法可能會導致經濟放緩?我可以做什麼(提示等)來幫助它在創建物化視圖時更快執行?

+0

您是否嘗試過使用預先建立的表的MV? – 2012-02-16 04:59:13

回答

0

對不起,我不知道答案。我也遇到過這個問題,無法解釋它。就我而言,我只是把MV作爲一張桌子來實施,每個人都很開心。

0

我認爲差異(和問題)可能是刷新確實刪除並插入。創建表只執行select-insert。但刷新確實是刪除 - 選擇 - 插入。

嘗試用截斷做到這一點。不知道sintax的心臟,可以在文檔中找到。

+0

OP說創建速度很慢,而不是刷新。不過,好主意,即使刪除60+的因​​素仍然聽起來相當高。 (和......你不能截斷的MV,你行嗎?) – 2012-02-27 17:38:51

+0

@AlexPoole你是對的,OP談到創建。我沒有注意到這一點。我搜索了一秒鐘:如果mv不在刷新組中,刷新將做一個截斷。 – 2012-02-28 08:25:22

+0

謝謝,不知道,但不要多用MV。我以爲你的意思是直截了當,就像在桌子上一樣。 – 2012-02-28 08:29:00