2011-12-10 75 views
1

我有一個關於視圖的問題。考慮我們有一個觀點,我在它的基表中插入一條記錄。我的視圖在插入後是否更新,或者我應該執行SELECT更新?插入(或更新)到基表後立即更新視圖

我覺得我的問題很明顯 - 是查看只是一個SELECT或它的結果保存在數據庫中,如果它是基表,所以當它更新時,它會變成更新?

回答

4

正常視圖不會持續。如果插入可更新視圖,然後從視圖(或受影響的基礎表)中進行選擇,將顯示您的結果。

不完全確定你想要解決什麼問題。視圖(非索引)足以滿足大多數應用程序的需求。

看一看索引視圖:Improving Performance with SQL Server 2008 Indexed Views

在無索引的視圖的情況下,解決了查詢必要 視圖的部分在運行時實例化。任何計算如 作爲連接或聚合都是在查詢執行期間爲引用視圖的每個 查詢完成的。 在視圖上創建的唯一聚簇索引爲 之後,視圖的結果集立即實現爲 並且保存在數據庫的物理存儲中,從而節省了在執行時執行此代價高的操作的開銷 。

索引視圖的典型用法是當您需要執行昂貴的聚合時。

+0

你說普通views.Do我們有另一種視圖類型?我希望我的數據保持不變,並且在我的基表中每個「插入」後,我的視圖都會更新 – Arian

+1

是的,另一種類型被稱爲索引視圖 –

+0

索引視圖是否保留數據? – Arian

1

將視圖視爲選擇語句。不必寫出整個select語句,只需選擇視圖併爲您運行select語句。所以是的,任何你對底層表執行的操作都會在視圖中自動顯示。