視圖vs物化視圖
視圖和物化視圖(mviews)是oracle數據庫對象的兩種類型。這兩個對象都引用select查詢。這些select查詢充當虛擬表。通常視圖和mview引用大型select查詢,這些查詢具有一組連接。因此,視圖的主要優點之一是,我們可以將複雜的select查詢存儲為視圖。因此,我們可以對最終用戶隱藏select查詢背後的邏輯。當我們需要執行復雜的select語句時,只需執行
從視圖名稱中選擇*
視圖
如前所述,view是一個虛擬表,它隱藏了一個select查詢。這些select查詢不是預先執行的。當我們從視圖中執行select語句時,它將執行位於視圖主體內的select語句。讓我們假設視圖主體的select語句是一個非常複雜的語句。因此,當它被執行時,它需要一些時間來執行(相對來說更長的時間)。此外,view使用非常小的空間來存儲自己。這是因為它只有一個select語句作為其內容。
物化視圖(Mview)
這是一種特殊類型的視圖。mview是在視圖出現性能問題時創建的。當我們創建mview時,它執行select查詢並將其輸出存儲為快照表。當我們從Mview請求數據時,它不需要重新執行select語句。它提供快照表的輸出。因此,mview的執行時間小於view(對於同一個select語句)。但是,mviews不能一直使用,因為它顯示相同的輸出,輸出存儲為快照表。我們應該刷新mview以獲得它的最新結果集。
View和Mview有什麼區別?1Mview在創建時總是將其輸出存儲為快照表,但視圖不創建任何表。視圖不需要很大的空間來存儲其內容,但是mview需要比視圖更大的空間來存儲其內容(作為快照表)。View需要更長的執行時間,但是mview比views花費的執行時間要短(對於同一個select語句)。Mviews需要刷新以獲取最新數據,但視圖總是提供最新數據。模式需要creatematerialized view特權來創建mviews,而對於視圖,它需要createview特權。可以在mviews上創建索引以獲得更高的性能,但不能在視圖上創建索引。 |