數據庫視圖優缺點分析

視圖作用是什麼

所謂視圖(View)其實是執行查詢語句後得到的結果,但這個查詢結果可以仿真成數據表來使用,所以有人也稱它爲“虛擬數據表”,視圖在操作上和數據表沒有什麼區別,但兩者的差異是其本質是不同的:數據表是實際存儲記錄的地方,然而視圖並不保存任何記錄,它存儲的實際上是查詢語句,其所呈現出來的記錄實際來自於數據表,可以爲多張數據表,大家由此可以預見到視圖應用的彈性!我們可以依據各種查詢需要創建不同視圖,但不會因此而增加數據庫的數據量。


視圖是爲用戶對數據多種顯示需求而創建的,其主要用在一下幾種情況:

(1)限制用戶只能訪問特定表特定條件的內容,提高系統的安全性。

(2)隱藏表結構、創建多種形式的數透視,滿足不同用戶需求。

(3)將複雜的SELECT語句和表JION形成一個視圖,給用戶提供一個良好的接口。

(4)爲使用頻率較高的聯表聚合運算創建索引視圖,以提程序性能。

(5)創建分區視圖調用遠程數據,實現數據的分佈式存儲與查詢,提升程序的吞吐能力。


視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。視圖在數據庫中並不是以數據值存儲集形式存在,除非是索引視圖。行和列數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。

對其中所引用的基礎表來說,視圖的作用類似於篩選。定義視圖的篩選可以來自當前或其他數據庫的一個或多個表,或者其他視圖。分佈式查詢也可用於定義使用多個異類源數據的視圖。例如,如果有多臺不同的服務器分別存儲您的單位在不同地區的數據,而您需要將這些服務器上結構相似的數據組合起來,這種方式就很有用。


視圖的優點與缺點

優點:

● 簡單性。視圖不僅可以簡化用戶對數據的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義爲視圖,從而使用戶不必爲以後的操作每次都指定全部的條件。

● 安全性。通過視圖用戶只能查詢和修改他們所能見到的數據。數據庫中的其他數據則既看不見也取不到。數據庫授權命令可以使每個用戶對數據庫的檢索限制到特定的數據庫對象上,但不能授權到數據庫特定行和特定的列上。通過視圖,用戶可以被限制在數據的不同子集上。

● 邏輯數據獨立性。視圖可以使應用程序和數據庫表在一定程度上獨立。如果沒有視圖,應用一定是建立在表上的。有了視圖之後,程序可以建立在視圖之上,從而程序與數據庫表被視圖分割開來。

缺點,主要如下。

● 性能:SQL Server必須把視圖的查詢轉化成對基本表的查詢,如果這個視圖是由一個複雜的多表查詢所定義,那麼,即使是視圖的一個簡單查詢,SQL Server也把它變成一個複雜的結合體,需要花費一定的時間。

● 修改限制:當用戶試圖修改視圖的某些行時,SQL Server必須把它轉化爲對基本表的某些行的修改。對於簡單視圖來說,這是很方便的,但是,對於比較複雜的視圖,可能是不可修改的。

所以,在定義數據庫對象時,不能不加選擇地來定義視圖,應該權衡視圖的優點和缺點,合理地定義視圖。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章