ORACLE臨時表和SQLSERVER臨時表異同

okone96發表於2007-01-04

SQL SERVER臨時表 臨時表與永久表相似,但臨時表儲存在 tempdb 中,當不再使用時會自動刪除。有本地和全域性兩種型別的臨時表,二者在名稱、可見性和可用性上均不相同。
本地臨時表的名稱以單個數字符號 (#) 打頭;它們僅對當前的使用者連線是可見的;當使用者從 Microsoft® SQL Server™ 2000 例項斷開連線時被刪除。全域性臨時表的名稱以數學符號 (##) 打頭,建立後對任何使用者都是可見的,當所有引用該表的使用者從 SQL Server 斷開連線時被刪除。 例如,如果建立名為 employees 的表,則任何人只要在資料庫中有使用該表的安全許可權就可以使用該表,除非它已刪除。如果建立名為 #employees 的本地臨時表,只有您能對該表執行操作且在斷開連線時該表刪除。如果建立名為 ##employees 的全域性臨時表,資料表中的任何使用者均可對該表執行操作。如果該表在您建立後沒有其他使用者使用,則當您斷開連線時該表刪除。如果該表在您建立後有其他使用者使用,則 SQL Server在所有使用者斷開連線後刪除該表

ORACLE臨時表和SQLSERVER臨時表異同 SQL SERVER臨時表是一種”記憶體表”,表是儲存在記憶體中的.ORACLE臨時表除非執行DROP TABLE,否則表定義會保留在資料字典中. SQL SERVER臨時表不存在類似ORACLE臨時表 事務級別 上的功能. SQL SERVER本地臨時表(#) 與 ORACLE的會話級別臨時表類似,但是在會話退出的時候,ORACLE不會刪除表. SQL SERVER的全域性臨時表(##) 是指多個連線共享同一片記憶體.當沒有指標引用該記憶體區域時,SQL SERVER自動釋放全域性臨時表. 由於ORACLE不是一種 記憶體中的資料庫. 所以如果ORACLE類似SQL SERVER 頻繁的對臨時表進行建立和刪除,必定會影響效能.所以ORACLE會保留臨時表的定義直到使用者DROP TABLE. 在ORACLE中,如果需要多個使用者共享一個表(類似SQL SERVER的全域性臨時表##).則可以利用永久表,並且在表中新增一些可以唯一標識使用者的列.利用觸發器和檢視.當使用者退出的時候,根據該登陸使用者的唯一資訊刪除相應的表中的資料. 這種方法給ORACLE帶來了一定量的負載.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750220/viewspace-888327/,如需轉載,請註明出處,否則將追究法律責任。

相關文章