27、oracle的臨時表問題

yyycxhtx發表於2007-08-21

[@more@]1 語法
在Oracle中,可以建立以下兩種臨時表:
1) 會話特有的臨時表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT PRESERVE ROWS;
2) 事務特有的臨時表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的臨時表雖然是存在的,但是如果insert 一條記錄然後用別的連線登上去select,記錄是空的。

--ON COMMIT DELETE ROWS 說明臨時表是事務指定,每次提交後ORACLE將截斷表(刪除全部行)
--ON COMMIT PRESERVE ROWS 說明臨時表是會話指定,當中斷會話時ORACLE將截斷表。

2 特性和效能(與普通表和檢視的比較)
臨時表只在當前連線內有效
臨時表不建立索引,所以如果量比較大或進行多次查詢時,不推薦使用
處理比較複雜的時候臨時錶快,反之檢視快點
在僅僅查詢的時候建議用遊標: open cursor for 'sql clause';

3 臨時表也可以建立檢視,約束。臨時表不加鎖

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

相關文章