1. 程式人生 > >資料庫臨時表和檢視的區別

資料庫臨時表和檢視的區別

檢視:

檢視的定義:從一個或多個表(或檢視)匯出的表。

檢視與表的不同之處:檢視是一個虛表,即檢視所對應的資料不進行實際儲存,資料庫只儲存檢視的定義,對檢視的資料進行操作時,系統根據檢視的定義去操作與檢視相關聯的基本表。

上面小段其實已經講出了檢視的本質特徵。

檢視主要用於系統的安全、查詢和效率,在安全方面,舉個例子:例如,你只想讓使用者看到某一表的某幾個欄位,有些欄位想不讓使用者看見,這是用檢視解決會很好,當然在select時也可以實現。第在查詢方面,對於比較複雜的查詢,可以大大減少頻繁編寫sql語句的煩惱。同時,在效率上,資料分佈在多臺伺服器上,檢視一定會帶來效率上的好處。

臨時表:

臨時表與永久表相似,但臨時表儲存在 tempdb 中,當不再使用時會自動刪除。 
    臨時表有兩種型別:本地和全域性。它們在名稱、可見性以及可用性上有區別。本地臨時表的名稱以單個數字元號 (#) 打頭;它們僅對當前的使用者連線是可見的;當用戶從 SQL Server 例項斷開連線時被刪除。全域性臨時表的名稱以兩個數字符號 (##) 打頭,建立後對任何使用者都是可見的,當所有引用該表的使用者從 SQL Server 斷開連線時被刪除。

例如,如果建立了 employees 表,則任何在資料庫中有使用該表的安全許可權的使用者都可以使用該表,除非已將其刪除。如果資料庫會話建立了本地臨時表 #employees,則僅會話可以使用該表,會話斷開連線後就將該表刪除。如果建立了 ##employees 全域性臨時表,則資料庫中的任何使用者均可使用該表。如果該表在您建立後沒有其他使用者使用,則當您斷開連線時該表刪除。如果您建立該表後另一個使用者在使用該表,則 SQL Server 將在您斷開連線並且所有其他會話不再使用該表時將其刪除。
  臨時表主要用來提高效率。

二者區別:
空間分配:物理空間的分配不一樣,檢視不分配空間,   臨時表會分配空間
虛實:檢視是一條預編譯的SQL語句,並不儲存實際資料,而臨時表是儲存在tempdb中的實際的表。即檢視是一個快照,是一個虛表,而臨時表是客觀存在的表型別物件。它們的結構一個是表、一個快照。可以把檢視想象成聯合表的快捷方式。