全局臨時表使用的情景

全局臨時表有兩種模式:

一種是基於會話級別的,會話與會話之間的數據是隔離的,當會話段掉,數據就會清空;一種是基於事務級別的,當執行commit或者rollback 數據將清除,全局臨時表使用的是臨時表空間的位置。臨時表即使當前會話已經提交了(commit)數據,別的會話也看不到它的數據。對於臨時表,不存在多用戶併發的問題,因爲一個會話不會因爲使用一個臨時表而阻塞另一個會話。即使我們“鎖住”了臨時表,也不會妨礙其他會話使用臨時表。

創建基於session的全局臨時表(退出session該表記錄就會自動清空)

create global temporary table

表名

(

字段名 類型 是否爲空,

字段名 類型 是否爲空

)

on commit preserve rows;

創建基於事務的全局臨時表(commit提交後,不等退出session,在該表記錄就會自動清空)

create global temporary table

表名

(

字段名 類型 是否爲空,

字段名 類型 是否爲空

)

on commit delete rows。

目前所有使用Oracle作爲數據庫支撐平臺的應用,大部分是數據量比較龐大的系統,即表的數據量級一般情況下都是在百萬級以上。當然,在Oracle中創建分區是一種不錯的選擇,但是當發現應用有多張表關聯的時候,並且這些表大部分都比較龐大,而關聯的時候發現其中的某一張或者某幾張表關聯之後得到的結果集非常小,並且查詢得到這個結果集的速度非常快,那麼這個時候考慮在Oracle中創建“臨時表”.

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